ES6类继承解决冲突的方法名称

时间:2018-06-13 21:35:04

标签: ecmascript-6 es6-class

我希望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

1 个答案:

答案 0 :(得分:2)

您可以使用call执行此操作。

method() {
  base.prototype.method2.call(this);
}

在这种情况下,您在技术上需要使用call并提供this值,因为您不使用它,但这是最好的方法创建你想要的电话,以便在任何情况下都能正常工作。

顺便说一句,我不明白你要用const base = class {}语句来实现什么。类声明会不那么令人惊讶:class base {}