首页 > 解决方案 > Javascript如何从构造函数调用覆盖的方法

问题描述

我在javascript a,b中有两个类。b 类扩展 a。类在构造函数中调用方法。我想在 b 类中覆盖这个方法。如何调用可覆盖的方法?当我添加到类 a 到构造函数 this.method() 时,它总是从类中调用方法。

class a {
  constructor() {
    this.method();
  }

  method() {
    alert("a");
  }
}

class b extends a {
  constructor() {
    super();
  }

  method() {
    alert("b");
  }
}

标签: javascript

解决方案


如果您事先不知道实例是子类还是超类,您可以通过显式引用超类本身来确保超类调用自己的方法:

A.prototype.method.call(this);

class A {
  constructor() {
    A.prototype.method.call(this);
  }

  method() {
    console.log("a");
  }
}

class B extends A {
  constructor() {
    super();
  }

  method() {
    console.log("b");
  }
}

const b = new B();


推荐阅读