当我通过道格拉斯·克罗克福德(Douglas Crockford)在这个例子中关闭私人会员时
function Container(param) {
function dec(){
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
var secret = 3;
this.service = function(){
if(dec()){
return param;
} else {
return null;
}
};
}
Container
的每个实例都有一个私有secret
。如果我希望所有 Container
的实例共享对同一私有变量的访问权限,该怎么办? (当然,有很多方法可以使用公共变量)
因此,对Container
的任何实例的调用会将secret
降低1,无论调用this.service
的实例是什么,都只能调用4次
答案 0 :(得分:3)
使用IIFE创建对象构造函数并将秘密放在该范围内:
var Container = (function(){
var secret = 3;
return function(param) {
function dec(){
if (secret > 0) {
secret -= 1;
return true;
} else {
return false;
}
}
this.service = function(){
if(dec()){
return param;
} else {
return null;
}
};
};
})();