【发布时间】:2021-01-10 04:52:54
【问题描述】:
我知道 JavaScript 类是原型的语法糖,在其他 OOP 语言中不能作为纯类工作。但是这里出现的问题是在 getter 和 setter 上。当完全将 getter 和 setter 留在子类中时,它的行为正常,但如果我定义了任何一个 getter 或 setter,就会破坏这些。
例如:
class A {
constructor() {
this.__value = "Default";
}
set value(value) {
console.log("setter called")
this.__value = value;
}
get value() {
console.log("getter called")
return this.__value;
}
}
class B extends A {
}
let b = new B();
b.value = 2;
console.log(b.value);
上面的代码工作正常,但如果我在子类中定义 getter 或 setter,则查找不会转到父类。我用谷歌搜索了一下,发现这是故意的,而且是 ES 标准。那为什么当子类没有方法时,查找到父类并且能够访问getter和setter?
【问题讨论】:
标签: javascript prototype getter-setter