react中constructor( )和super( )的具体含义以及如何使用
?react中这两个API出镜率超级高,但是一直不太懂这到底是干嘛的,有什么用;今天整理一下,方便自己查看同时方便大家。 ? 1.constructor( )-----super( )的基本含义? ? constructor( )——构造方法 ? ? ? ?这是ES6对类的默认方法,通过?new?命令生成对象实例时自动调用该方法。并且,该方法是类中必须有的,如果没有显示定义,则会默认添加空的constructor( )方法。 ? super( ) ——继承 ? ? ? 在class方法中,继承是使用 extends 关键字来实现的。子类 必须 在 constructor( )调用 super( )方法,否则新建实例时会报错。 ? ? ? ?报错的原因是:子类是没有自己的 this 对象的,它只能继承自父类的 this 对象,然后对其进行加工,而super( )就是将父类中的this对象继承给子类的。没有 super,子类就得不到 this 对象。 ? 2.Es5-----Es6关于继承的实现不同之处? ? 出现上面情况的原因是,ES5的继承机制与ES6完全不同。 复习一个重要知识点——ES5中new到底做了些啥?
? ? ? 简单解释,就是在ES5的继承中,先创建子类的实例对象this,然后再将父类的方法添加到this上(? ? 3.super(props)------super()-----以及不写super的区别? ? ?如果你用到了constructor就必须写super(),是用来初始化this的,可以绑定事件到this上; ? ?如果你在constructor中要使用this.props,就必须给super加参数:super(props); ? ?(无论有没有constructor,在render中this.props都是可以使用的,这是React自动附带的;) ? ?如果没用到constructor,是可以不写的;React会默认添加一个空的constructor。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |