繁体   English   中英

如何覆盖类箭头函数方法

[英]How to override class arrow function method

我知道这很简单,但我似乎无法找到问题的答案。

许多引用如果您具有相同的函数名称,则仅在调用函数时调用函数的最后一个实例(覆盖)。

如果函数是箭头函数,我似乎无法做到这一点。

正常功能行为:

 class A { constructor() { this.something(); } something() { console.log('I am A'); } } class B extends A { something() { console.log('I am B'); } } let b = new B(); 

这会覆盖class Asomething()函数,但如果它是箭头函数格式,我似乎无法覆盖函数something()

 class A { constructor() { this.something(); } something = () => { console.log('I am A'); } } class B extends A { something = () => { console.log('I am B'); } } let b = new B(); 

为什么两者的输出不同? 如何正确覆盖父类中的箭头功能?

class A {
  constructor() {
    this.something();
  }

  something = () => {
    console.log('I am A');
  }
}

class B extends A {
constructor() {
    super();
    this.something();
  }
  something = () => {
    console.log('I am B');
  }
}

let b = new B();

这适合我。 发生的事情是你在类A中调用this.something() ,因此它将在类A中使用它自己的方法。如果你在类B中调用它,它将使用它自己的构造函数来覆盖类A构造函数。 您也可以使用super.something();调用B类中的A类super.something();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM