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