如何覆盖 class 箭头函数方法

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

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

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

在 Class B 中调用 Class A