嵌套类对象上的defineProperty

时间:2016-03-22 08:48:20

标签: javascript oop object prototype

我们说我们有这个课程:

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上做同样的事情。

由于

1 个答案:

答案 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>');