super
关键字,既可以当作函数使用,也可以当作对象使用。
第一种情况,super
作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super
函数,我们在写react的时候 当继承Component的时候为什么会有这样的写法,就是这个原因
作为函数时,super()
只能用在子类的构造函数之中,用在其他地方就会报错。
super在子类中,相当于 父类.prototype.constructor.call(this)
。执行的是父类中的constructor方法,this指向是子类
第二种情况,super
作为对象时,在普通方法中,指向父类的原型对象 A.prototype;在静态方法中,指向父类。
ES6 规定,通过super
调用父类的方法时,super
会绑定子类的this
。但执行的是父类的方法