ES6的class能否在父类中指定调用父类自身的方法

class A {
  x() {  }
  y() { 
    Object.getPrototypeOf(Object.getPrototypeOf(this)).x.call(this) //??
  }
}

class B extends A {
  x() {
    // 方法重写 
  }
  y() { 
    super.x()
  }
}

const b = new B()
b.y()

我知道在子类中用super.x()可以调用父类的方法,但这个方法本身定义在父类中的话应该怎么写?
目前用原型链是可以临时解决,但是如果直接new A还是有问题,而且即用class又用原型感觉很奇怪,有没有比较优雅的写法呢?

阅读 4k
2 个回答

假设A为父类 B为子类
A类有x和y方法 并且B类也有x和y方法 显然 B类的方法会覆盖A类同名方法
如果你想在B类中调用A类中的同名方法 可以这样做

const b = new B()
const x = A.x
x.call(b)

这样就实现了在B类实例中调用父类A的x方法

如果你想调用的是 A 的 x 方法,那么通过 this.x() 就可以调用。

如果你想的是在 A 里调用 B 所重写的 x 方法,那么你需要重新考虑一下你的继承链的问题,这不是一个合法的继承用法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题