super关键字用于子类中调用父类构造函数或同名方法:子类构造函数必须先调用super()初始化this,实例方法中可用super.method()调用父类原型方法,此时this仍指向子类实例,super仅限类内部使用且不可赋值。

super 关键字在子类的原型方法中,用于调用父类(即父构造函数的 prototype 上)的同名方法。它必须在子类的构造函数或实例方法中使用,且只能出现在严格模式下(ES6 类默认启用严格模式)。
在子类构造函数中调用父类构造函数
子类构造函数中必须显式调用 super(),否则无法访问 this。这是强制要求,不调用会报错。
- super() 会执行父类的 constructor,并将 this 绑定到当前子类实例上
- 必须在使用 this 之前调用 super(),否则语法错误
- 如果父类构造函数需要参数,super() 必须传入对应参数
在子类实例方法中调用父类同名方法
在子类的原型方法里,用 super.methodName() 可以调用父类 prototype 上定义的同名方法。此时 super 指向父类的原型对象(Parent.prototype)。
- super 不是对象,不能赋值或解构,仅支持方法调用和属性访问(只读)
- super.foo() 中的 this 仍指向当前子类实例,不是父类实例
- 适用于重写方法时复用父逻辑,比如日志、校验、初始化等
注意 this 的绑定不会因 super 改变
通过 super 调用的方法内部,this 仍是当前子类实例,不是父类实例。这意味着被调用的父方法中访问的 this.xxx 仍是子类实例上的属性(包括被子类覆盖的 getter/setter 或方法)。
立即学习“Java免费学习笔记(深入)”;
- 父类方法若依赖 this.data,而子类实例上有 data 属性,就会读取子类的值
- 若父类方法内调用了另一个被子类重写的方法,实际执行的是子类版本(动态绑定)
不能在普通函数或箭头函数中单独使用 super
super 只能在类的构造函数、实例方法、静态方法中使用。在普通 function、事件回调、setTimeout 回调、箭头函数中直接写 super 会报语法错误。
- 若需在回调中调用父方法,可提前用变量保存:const parentMethod = super.method.bind(this)
- 或改用父类原型显式调用:Parent.prototype.method.call(this)


















