0

原型方法如何在构造函数中访问私有变量(通过闭包访问的值)而不暴露公共 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 变量。

4

1 回答 1

2

因为私有的概念从来都不是 JavaScript 的一部分,所以没有办法自然地这样做。您只是在 JS 中“模拟”私人信息。

您可以做到的唯一方法是将方法声明放在构造函数的范围内,以便它可以看到“私有”成员。但这意味着在每个实例上复制函数,并且函数存在于实例上,而不是原型上。

function User(){

  var value = 1;

  this.add = function(newValue){
    value += newValue;
  };

}
于 2013-06-08T14:07:29.943 回答