嵌套类对象上的defineProperty

Azi*_*ule 3 javascript oop prototype object

假设我们有这个类:

var MyClass = function() {
    this.oneProp = 'one prop';
    this.myProps = {
        prop1: 'my prop1',
        prop2: 'my prop2'
    };
});
Run Code Online (Sandbox Code Playgroud)

我如何配置一个getter / setter方法上myProps.prop1使用Object.defineProperty,这样,当我改变myProps.prop1,值myProps.prop2被设置为,例如,'_'+prop1

我找到了一个简单的方法来定义一个 getter/setteroneProp使用:

Object.defineProperty(MyClass.prototype, 'oneProp', {
    ...
});
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在myProps.prop1.

谢谢

Nin*_*olz 5

您可以直接在对象字面量中编写 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>');
Run Code Online (Sandbox Code Playgroud)