如何允许对象设置器编写对象的其他属性?

时间:2018-03-08 01:40:44

标签: javascript

我正在尝试将一个setter定义为一种传递,它允许我检测底层属性的变化:

var x={}
Object.defineProperty(x, "_a", { 
    value:-1, writeable:true, 
    enumerable:true, configurable:true 
})
Object.defineProperty(x, "a", {
  enumerable: true, configurable: true,
  get: function() { return this._a },
  set: function(val) { 
      this._a=val; 
      console.log(this,"note:x.a=",val,"=",this._a) 
  }
})

This answer似乎暗示这种方法应该有用。

但是,当我尝试分配给“a”属性时,我无法设置“_a”,导致我的setter无用:

> {_a: -1} "note:x.a=" 1 "=" -1
< 1

如果我替换它所使用的对象之外的任何其他变量,但这是不可取的,因为我必须有两个单独的对象,一个用于被监视的属性,另一个用于未被监视的属性。添加或删除监视时,我必须将值从一个复制到另一个,并且我必须为每个对象访问添加一个条件,以便在第一个对象失败时允许第二个对象查找。

我确保“_a”是可写的,我认为从阅读documentation应该是我需要做的全部。我错过了什么?

0 个答案:

没有答案