gpt4 book ai didi

javascript - 为什么重新分配 super 方法不会导致稍后调用重新分配的方法?

转载 作者:行者123 更新时间:2023-11-29 16:32:29 26 4
gpt4 key购买 nike

在下面的构造函数中,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()

最佳答案

简短的回答是 super语法。它不是具有神奇名称的函数调用(尽管它看起来就是这样!)。

查看 SuperProperty 的语法产生式和 SuperCall在 ECMAScript 规范中:

  • SuperProperty 涵盖诸如 super.somePropertysuper[someExpression] 之类的内容。

  • SuperCall 涵盖了 super()super(someArgument)

关于javascript - 为什么重新分配 super 方法不会导致稍后调用重新分配的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54685556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com