【发布时间】:2022-10-25 09:08:38
【问题描述】:
我有这些课程:
class Control {
get code() {
return 3;
}
getCodeChain() {
var result = [this.code];
if (super.getCodeChain) {
result = result.concat(super.getCodeChain());
}
return result;
}
}
class SubControl extends Control {
get code() {
return 2;
}
}
class AnotherControl extends SubControl {
get code() {
return 1;
}
}
console.log((new AnotherControl()).getCodeChain()); // prints 1
当我在 AnotherControl 实例上调用 getCodeChain 时,它一直到 Control 上下文,因此递归忽略 AnotherControl 和 SubControl 上下文。
我需要得到CodeChain,但我不想/不能在所有子类中实现getCodeChain() 方法。我期望的结果是[1,2,3]。
如何调用派生类上定义的超类方法?
【问题讨论】:
-
在子类中定义
getCodeChain()并不能解决问题。你会得到[1, 1, 1],因为它仍然会调用实际类的getter。
标签: javascript class extends superclass