我试图在类属性上触发一个setter:
jsnext: true
setter会覆盖我相信的道具,我怎么能指定默认对象值?我应该将类属性prop存储为_prop?
答案 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);