【问题标题】:How can I call same-level method in base class?如何在基类中调用同级方法?
【发布时间】:2022-01-17 15:15:54
【问题描述】:

这是我的代码

class Parent {
  async A(part, id) {
  }

  async B(part, id) {
    await this.A(part, id)
  }
}

class Child extends Parent {
  async A(id) {
  }

  async B(id) {
    await super.B("part1", id);
    // ...
  }
}

// let's assume I'm in async context
const child = new Child();
await child.B();

所以这里发生的是 Child.B 正在调用 Parent.B,而 Parent.B 正在调用 Child.A(这是预期的)。

我想知道我是否可以打电话给 Parent.B > Parent.A。

我意识到也许我需要重命名方法,但我想知道是否有办法。

【问题讨论】:

标签: javascript inheritance


【解决方案1】:

如果您想调用特定类的方法而不是在实例(this)或您自己的原型(trough super)上查找它,请直接引用该方法并在实例上 .call 它:

class Parent {
  async A(part, id) {
  }

  async B(part, id) {
    await Parent.prototype.A.call(this, part, id)
  }
}

【讨论】:

  • 是的,这确实有效,谢谢!
猜你喜欢
  • 2012-05-02
  • 2021-05-13
  • 2021-07-18
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
相关资源
最近更新 更多