类属性的Setter / getter(Object.assign)?

时间:2016-10-10 23:38:56

标签: javascript ecmascript-6

我试图在类属性上触发一个setter:

jsnext: true

setter会覆盖我相信的道具,我怎么能指定默认对象值?我应该将类属性prop存储为_prop?

1 个答案:

答案 0 :(得分:2)

我会在构造函数中手动定义访问器:



class Example {
  constructor() {
    var prop = { default: 'default', color: 'red' };
    Object.defineProperty(this, 'prop', {
      get() { return prop; },
      set(value) { Object.assign(prop, value); }
    });
  }
}
const myExample = new Example();
console.log(myExample.prop);
myExample.prop = {foo: "bar"};
console.log(myExample.prop);




如果您不介意prop公开,您可以将访问者移到构造函数之外,并在所有实例之间共享它们:



class Example {
  constructor() {
    this._prop = { default: 'default', color: 'red' };
  }
  get prop() { return this._prop; }
  set prop(value) { Object.assign(this._prop, value); }
}
const myExample = new Example();
console.log(myExample.prop);
myExample.prop = {foo: "bar"};
console.log(myExample.prop);