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

上一篇下一篇

猜你喜欢

热点阅读