我希望this.method2()
调用base
来执行base.method2()
,而实际执行derived.method2()
(我理解行为背后的想法),是否有可能实现此目的< em>没有方法重命名,这里最好的做法是什么?
const base = class {
method() {
this.method2();
}
method2() {
console.error("base.method2");
}
}
const derived = new class extends base {
method() {
super.method();
}
method2() {
console.error("derived.method2");
}
}
derived.method(); // want 'base.method2' here
答案 0 :(得分:2)
您可以使用call
执行此操作。
method() {
base.prototype.method2.call(this);
}
在这种情况下,您在技术上需要使用call
并提供this
值,因为您不使用它,但这是最好的方法创建你想要的电话,以便在任何情况下都能正常工作。
顺便说一句,我不明白你要用const base = class {}
语句来实现什么。类声明会不那么令人惊讶:class base {}
。