gpt4 book ai didi

javascript - 在 JavaScript 类中,您需要始终调用 super?对这个说法感到困惑

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

我目前正在学习 React,在教程中看到了这一行:

“在 JavaScript 类中,您需要在定义子类的构造函数时始终调用 super。”

我认为唯一需要调用 super() 的时候是当你想使用父类的属性时,而你不需要那些你不必调用 super() 的属性。我知道创建一个不使用其父类属性的子类是毫无意义的,但上述陈述对 JS 来说是正确的还是只是为了使用react?

作为网络开发的菜鸟,真的很困惑。

最佳答案

子类应该总是调用父类的构造函数,这应该发生在 this 在子类中第一次被访问之前。这是 ES6 类的故意限制。否则它就不是子类而是其他东西了。

子类不需要的唯一情况是它使用隐式构造函数,即它是从父类继承的:

class Bar extends Foo {}

的捷径
class Bar extends Foo {
constructor(...args) {
super(...args);
}
}

这在 React 中很常见,因为使用显式构造函数的情况相对较少,而 class fields经常使用并且是显式构造函数的语法糖:

class MyComponent extends React.Component {
state = { foo: this.props.foo };
...
}

的捷径
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = { foo: this.props.foo };
}
...
}

关于javascript - 在 JavaScript 类中,您需要始终调用 super?对这个说法感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54164225/

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