ecm6中的super

super关键字,既可以当作函数使用,也可以当作对象使用。

第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数,我们在写react的时候 当继承Component的时候为什么会有这样的写法,就是这个原因

 

作为函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错。

super在子类中,相当于 父类.prototype.constructor.call(this)。执行的是父类中的constructor方法,this指向是子类

 

 

第二种情况,super作为对象时,在普通方法中,指向父类的原型对象 A.prototype;在静态方法中,指向父类。

ES6 规定,通过super调用父类的方法时,super会绑定子类的this。但执行的是父类的方法

posted @ 2017-08-14 23:12  教父123  阅读(207)  评论(0编辑  收藏  举报