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;
//}
}
覆盖属性的set
方法,似乎还必须覆盖get
方法,否则返回undefined
(即,get
方法不会被继承,取消注释上面的子类get property()
方法,一切正常。)
我认为这是规范的一部分,但如果行为是交叉编译的结果,它可能会跟随。可以肯定的是,这是编码被覆盖的setter和getter的正确方法(同时还是根本没有)?
答案 0 :(得分:11)
是的,这是故意的(规范的一部分)。如果对象具有自己的属性(示例中为.property
),则将使用此属性,而不是继承的属性。如果该属性存在,但是没有getter的访问者属性,则将返回undefined
。
请注意,此行为未从ES5更改。