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更改.
| 归档时间: |
|
| 查看次数: |
11177 次 |
| 最近记录: |