如何覆盖 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
我知道这很简单,但我似乎找不到问题的答案。
许多引用表明,如果您具有相同的函数名称,则在调用该函数(覆盖)时只会调用该函数的最后一个实例。
如果函数是箭头函数,我似乎无法执行此操作。
正常功能行为:
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();