为什么react的组件要supe
题主问的难道是“React class
组件的constructor
方法内为啥必须调用super
方法”?
这个是ES2015 class的语法规则,即:
如果子类定义了constructor
方法,则必须在子类的constructor
方法中调用父类的构造方法(即使父类没有显示的定义constructor
方法),并且super
语句必须在this
引用之前。
class A{
}
class B extends A {
constructor(){
}
}
// ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor
var b = new B();
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
这是
ES6
语法中,子类调用超类的构造函数的方式。如果以混合寄生方式实现继承:
看起来是不是有内味了?
ES6
规范当然也可以规定用其他方法来调用超类的构造函数,比如默认以子类的参数列表来调用,但这样一来,子类的参数列表就必须兼容超类的参数列表。