说我有两个班,A
和B
。 B
扩展了A
。它们看起来像这样:
class A {
localFunction() {
return a.staticMethod();
}
static staticMethod() {
return true;
}
}
class B extends A {
static staticMethod() {
return false;
}
}
因此我可以创建类A
的新实例
const newA = new A();
然后调用newA.localFunction()
将按预期返回true
。
但是当我创建类B
const newB = new B();
然后调用newB.localFunction()
仍然会得到true
,因为函数localFunction
从未被重新定义。
我希望类localFunction
中的B
使用类B
中定义的静态函数,但是我不想重新定义它。
答案 0 :(得分:0)
答案 1 :(得分:0)
我实际上已经为问题解决了一个干净的解决方案。
仅使用this.constructor
而不是类名调用静态函数
class A {
localFunction() {
return this.constructor.staticMethod();
}
static staticMethod() {
return true;
}
}
此操作将允许类B
覆盖静态方法并以相同的方式调用它。