分配变量值:引用它而不是复制它

时间:2014-07-16 11:18:17

标签: javascript variables

function Picker() {
    this.status = [0, 0, 0];
    this.progress = Picker.status[0];
}

var picker = new Picker();

picker.progress = 2;

现在,如果我检查进度和状态[0]所持有的信息,它们将会有所不同。

如何将这些作为参考而非副本?

非常感谢

1 个答案:

答案 0 :(得分:1)

没有简单的方法,因为JavaScript不会将原始值存储为引用,但您可以这样做:

function Picker() {
    this.status = [0, 0, 0];
    Object.defineProperty(this, 'progress', {
      get : function(){ return this.status[0] },
      set : function(p){ this.status[0] = p },
      enumerable : true
    });
}

var picker = new Picker();
picker.progress = 2;
console.log(picker.status[0]) // logs 2

最典型的解决方案可能是使用getter和setter,或改变设计。