Loading... super关键字有两种用法,第一种是当作函数使用,代表父类的构造函数,第二种是当作对象使用。 当作函数使用时,ES6 要求,子类的构造函数必须执行一次`super`函数。 ``` class father { constructor(name,age){ this.name = name; this.age = age; } } class son extends father{ constructor(name,age){ super(name,age); } } ``` 该super()相当于father.prototype.constructor.call(this) 且作为函数时,`super()`只能用在子类的构造函数之中,用在其他地方就会报错。 ``` class A {} class B extends A { m() { super(); // 报错 } } ``` super当作对象使用时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。注意,由于`super`指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过`super`调用的。 最后修改:2022 年 06 月 25 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏