我们说我们有这个课程:
var MyClass = function() {
this.oneProp = 'one prop';
this.myProps = {
prop1: 'my prop1',
prop2: 'my prop2'
};
});
如何使用Object.defineProperty
在 myProps.prop1 上配置getter / setter,以便在我更改myProps.prop1
时,myProps.prop2
的值设置为例如,'_'+prop1
?
我找到了一种使用以下方法在oneProp
上定义getter / setter的简单方法:
Object.defineProperty(MyClass.prototype, 'oneProp', {
...
});
但我无法弄清楚如何在myProps.prop1
上做同样的事情。
由于
答案 0 :(得分:3)
您可以直接在对象文字中编写getter。
var MyClass = function() {
this.oneProp = 'one prop';
this.myProps = {
prop1: 'my prop1',
get prop2() { return '_' + this.prop1; },
set prop2(v) { this.prop1 = v; }
};
}
var x = new MyClass;
document.write(x.myProps.prop2 + '<br>');
x.myProps.prop2 = 42;
document.write(x.myProps.prop2 + '<br>');