【发布时间】:2019-08-04 20:26:45
【问题描述】:
我知道这很简单,但我似乎找不到我的问题的答案。
许多引用表明,如果您具有相同的函数名,则在调用(覆盖)函数时只会调用函数的最后一个实例。
如果函数是箭头函数,我似乎无法做到这一点。
正常功能行为:
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();
为什么两者的输出不一样?如何正确覆盖父类中的箭头函数?
【问题讨论】:
-
与箭头函数无关。使用
something = function() { ... }会得到相同的结果。 -
区别在于赋值与声明。
-
为什么要在这样的类中定义箭头函数?还是仅仅因为
-
@chiliNUT 这个 npm 包有一个错误,声明了这样的函数。我想扩展到该包,然后覆盖导致错误的函数,因为我不想直接编辑包。
-
箭头函数一般不应该用作类方法,因为它们不会从对象中得到
this。
标签: javascript ecmascript-6 arrow-functions