【发布时间】:2019-02-14 07:56:26
【问题描述】:
在下面的构造函数中,super.say 被重新分配给一个新函数。在实例上调用.say() 时,将调用新函数。但是,当在调用super.say 的实例上调用不同 方法时,新函数不 被调用——而是调用父C 类上的原始函数。为什么会有区别?
class C {
say() {
console.log('hello');
}
}
class D extends C {
constructor() {
super()
super.say = function() {
console.log('changed');
}
}
shout() {
super.say()
}
}
let d = new D()
// changed
d.say()
// hello
d.shout()
【问题讨论】:
-
@CertainPerformance 好吧,我有一个不同的问题(尽管它们的标题似乎相同),请您删除“:duplicate”标签吗?
-
您的原始问题文本是“我想知道 super 究竟代表什么。谁能告诉我它背后的机制?”,因此关闭 - 编辑后的问题更具体地说明了什么你问的,谢谢。
-
@CertainPerformance 谢谢。 'what is ...' 表达方式过于普遍,我不应该使用它。
标签: javascript