原型方法如何在构造函数中访问私有变量(通过闭包访问的值)而不暴露公共getter和setter。
function User() {
var value = 1;
this.increment = function () {
value++;
};
this.set = function (val) {
value=val;
};
this.get = function () {
return value;
};
}
User.protptype.add = function (value) {
this.set(this.get()+value);
}
如何摆脱get()和set()并且仍然只有一个add()副本?
目的是确保add()函数只有一个实例,而不是为每个对象创建一个实例,而该对象能够访问私有变量,在本例中是构造函数中的value变量。
答案 0 :(得分:2)
因为private的概念从未成为JavaScript的一部分,因此没有办法自然地这样做。你只是在“模仿”JS中的私有。
唯一可以做到的方法是将方法声明放在构造函数的作用域中,以便它可以看到“私有”成员。但这意味着在每个实例上复制函数,并且函数存在于实例上,而不是原型上。
function User(){
var value = 1;
this.add = function(newValue){
value += newValue;
};
}