[英]Override a setter, and the getter must also be overridden
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的正確方法(同時還是根本不編碼)?
是的,這是故意的(規范的一部分)。 如果對象具有自己的屬性(在您的示例中為.property
),則將使用此屬性,而不是繼承的屬性。 如果該屬性存在,但是是沒有getter的訪問器屬性,則將返回undefined
。
請注意,此行為自ES5起沒有改變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.