有人能解释一下';超级()和#x27;ES6 Javascript中的关键字(尤其与React相关)?
我正在学习React.js,我看到构造函数中经常使用有人能解释一下';超级()和#x27;ES6 Javascript中的关键字(尤其与React相关)?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我正在学习React.js,我看到构造函数中经常使用super关键字 我知道super允许子类访问this关键字。然而,我找不到更多的解释 为什么调用super() 为什么super关键字将this绑定到类的上下文 当我不处理子类时,为什么不调用 super() 实际上,构造函数中的super调用调用父类的构造函数。您可以访问此,而不必使用它,但在react的上下文中,与此相关联的此属性,如此。props和此。state在react.Component类构造函数中正确设置和配置。这就是为什么你
super
关键字
我知道super
允许子类访问this
关键字。然而,我找不到更多的解释
- 为什么调用
super()
- 为什么
关键字将super
绑定到类的上下文this
- 当我不处理子类时,为什么不调用
super()
super
调用调用父类的构造函数。您可以访问此
,而不必使用它,但在react的上下文中,与此
相关联的此属性,如此。props
和此。state
在react.Component
类构造函数中正确设置和配置。这就是为什么你必须先调用super,这样才能正确设置这个。对不起,这张日文图片看起来很容易理解
在类成员函数中使用super
函数时,还应使用extends
关键字。在扩展类中调用super-likesuper(args)
时,它调用扩展类的构造函数。您还可以使用super.methods(args)
,而不是super(args)
调用扩展类的其他成员函数
(来自)
更新
供参考:
这个讨论很好地解释了react组件中的super
如何影响这个上下文约束。很好阅读。您可以在上查找关键字和大多数其他内容。您不能在方法中使用super(arg)
,它必须是super.methods(arg)
。谢谢。我将尝试使用“this”来测试super()如何设置它,但这在概念上更具意义。因此,按照这个逻辑,我们假设super()可以避免使用arrow函数,因为arrow函数将自动对父上下文透明?@Webwoman,我不认为构造函数是箭头函数是有意义的,因为在构造函数上,您肯定希望使用this
引用。。。也许我不明白你的意思…@Luanico我的意思是ES6 arrow函数不能绑定到this关键字,因此它会在词汇上向上扩展一个范围,并在定义它的范围内使用它的值,在本例中,组件本身。这只是做一些理论假设:)。