覆盖setter,并且还必须覆盖getter

use*_*531 19 javascript class getter-setter ecmascript-6 traceur

class AbstractClass {

    constructor() {
    }

    set property(value) {
        this.property_ = value;
    }

    get property() {
        return this.property_;
    }

}

class Subclass extends AbstractClass {

    constructor() {
        super();
    }

    set property(value) {
        super.property = value;
        if (!(this.property_ instanceof SubclassAssociatedClass)) throw new TypeError();
    }

    //get property() {
    //  return super.property;
    //}

}
Run Code Online (Sandbox Code Playgroud)

覆盖set属性的方法,看起来get方法也必须被覆盖,否则undefined返回(即,get方法不是继承的,取消注释get property()上面的子类方法,一切正常).

我认为这是规范的一部分,但如果行为是交叉编译的结果,可能会遵循.可以肯定的是,这是编码重写的setter和getter(同时还是根本没有)的正确方法?

Ber*_*rgi 14

是的,这是故意的(规范的一部分).如果对象具有自己的属性(.property在您的示例中),将使用此属性而不是继承的属性.如果该属性存在,但是没有getter的访问者属性,undefined则将返回.

请注意,此行为未从ES5更改.