如何覆盖类箭头函数方法

时间:2019-03-14 02:36:43

标签: javascript ecmascript-6 arrow-functions

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

许多参考文献指出,如果您具有相同的函数名称,则在调用该函数(覆盖)时仅会调用该函数的最后一个实例。

如果该功能是箭头功能,我似乎无法执行此操作。

正常功能行为:

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();

这确实会覆盖something()中的class A函数,但是如果它是箭头函数格式,我似乎无法覆盖函数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();

为什么两者的输出不同?如何正确覆盖父类中的arrow函数?

1 个答案:

答案 0 :(得分:0)

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类