gpt4 book ai didi

javascript - 覆盖setter,并且getter也必须被覆盖

转载 作者:行者123 更新时间:2023-12-01 17:30:50 25 4
gpt4 key购买 nike

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起没有改变。

关于javascript - 覆盖setter,并且getter也必须被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48209260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com