面向对象调用方法

2018-12-01  本文已影响0人  第三人称i
    let MyFun = function (id) {
        // 私有属性;
        let private = "我是私有属性";
        // 私有方法
        function  privateFun() {
            console.log('我是私有方法');
        }
        function setName() {
            console.log('我是私有方法,但是我被内部的公有方法调用了,所以叫做特权方法');
        }
        // 公有属性
        this.id = id;
        // 公有方法
        this.common = function () {
            console.log('公有的方法也就是说函数');
        }
        // 特权方法
        this.getName = function () {
            setName();
        }
        this.getPrivate = function () {
            console.log(private);
        }
    }
    let a = new MyFun(0);  // 构造器 传给私有属性参数 id = 0;
    console.log(a.id); // 调用 共有属性
    a.common();  // 调用公有方法 
    a.getName();  // 调用特权方法
    a.getPrivate(); // 调用特权方法
// =========================================================
//  闭包  
    let MyFun2 = (function () {
        // 静态私有属性
        let study = "学";
        // 静态私有方法
        function privateFun () {
            console.log('习');
        }
        function _MyFun2(name) {
            // 私有属性
            let surname = "翟";
            // 私有方法
            function setName() {
                console.log("好好");
            }
            // 公有方法
            this.name = name;
            this.lastname = function () {
                console.log('倩')
            }
            // 特权方法
            this.getName = function () {
                console.log(surname);
            }
            this.studyFun = function () {
                setName();
                console.log(study);
                privateFun();
            }
        }
        _MyFun2.prototype = {
            A:'加',
            B:'油'
        }
        return _MyFun2;
    })()
    var b = new MyFun2('敏'); // 构造器 传给私有属性参数 name = 敏
    b.getName();  // 调用 特权方法
    console.log(b.name); // 调用私有属性 
    b.lastname(); // 调用 公有方法
    b.studyFun(); // 调用 特权方法 以及 调用 静态私有属性 和 静态私有方法
    console.log(b.A); // 调用原型链属性
    console.log(b.B); // 调用原型链属性
上一篇 下一篇

猜你喜欢

热点阅读