【问题标题】:defineProperty on nested class object嵌套类对象的defineProperty
【发布时间】:2016-03-22 08:48:19
【问题描述】:

假设我们有这个类:

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

如何使用 Object.definePropertymyProps.prop1 上配置 getter / setter,以便当我更改 myProps.prop1 时,myProps.prop2 的值设置为,例如,@987654325 @?

我找到了一种在 oneProp 上定义 getter / setter 的简单方法:

Object.defineProperty(MyClass.prototype, 'oneProp', {
    ...
});

但我不知道如何在 myProps.prop1 上做同样的事情。

谢谢

【问题讨论】:

  • 不能把实例属性的属性放在原型上

标签: javascript oop object prototype


【解决方案1】:

你可以直接在对象字面量中写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>');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2022-01-22
    相关资源
    最近更新 更多