React初次接触
2019-05-20 本文已影响0人
岁月静好_dfb4
constructor()不是必须的,但,如果有constructor(),ES6语法强制使用super();
react 初始化class后,会自动将props设置在this中,所以没有constructor(),任何地方都可以使用this.props;如果有constructor(),除了constructor()中,同样任何地方都可以使用this.props;当你需要在contructor()中使用this.props时,必须使用super(props).
另:ES5的继承机制与ES6完全不同。
ES5:当一个构造函数前加上new的时候,背地里做了四件事:
1.生成一个空的对象并将其作为 this;
2.将空对象的 __proto__ 指向构造函数的 prototype;
3.运行该构造函数;
4.如果构造函数没有 return 或者 return 一个返回 this 值是基本类型,则返回this;如果 return 一个引用类型,则返回这个引用类型。
简单解释,就是在ES5的继承中,先创建子类的实例对象this,然后再将父类的方法添加到this上( Parent.apply(this) )。而ES6采用的是先创建父类的实例this(故要先调用 super( )方法),完后再用子类的构造函数修改this。
---------------------
参考原文:https://blog.csdn.net/chjj0904/article/details/79291117