细节:js 私有做用域中建立特权方法

特权方法就是有权访问私有变量和私有函数的公有方法:函数

function MyObject(){
    var privateVariable = 10;
    function privateFunction(){
        return false;
    }
    this.publicMethod = function(){
        privateVariable ++;
        return privateFunction();
    };
}    
var x = new MyObject();
console.log(x.publicMethod()) ;//false

私有做用域中定义私有变量和函数,一样也能够建立特权方法,如:this

(function(){
    var privateValue = 10;
    function privateFunction(){
        return false;
    }
    
    MyObject = function(){}; //没有var 属于全局变量,严格模式下会报错
    
    MyObject.prototype.publicMethod = function(){
        privateValue ++;
        return privateFunction();
    };
})();

var instance = new MyObject();
console.log(instance.publicMethod());

这里就能够看出实际上就是在私有做用域中定义了一个全局的构建函数;其中的一个方法就是返回私有做用域中的一个私有变量和属性。写成下面这样就能够更好地了解:prototype

Obj = function(){};

(function(){
    var x = 10;
    function y(){
        return x + 10;
    }

    Obj.prototype.say = function(){
        console.log(y());
    };
})()

var ins = new Obj();
ins.say();
相关文章
相关标签/搜索