super()必须在子类constructor中首行调用否则报错它触发父类构造函数并绑定this使子类实例正确继承属性方法且new.target指向子类非构造阶段可用super.xxx访问父类原型成员。在 JavaScript 类继承中super 不是普通函数调用而是与构造函数初始化和原型链绑定强相关的语法机制。它的执行逻辑直接决定子类实例能否正确获得父类属性、方法以及是否满足 new.target 的要求。super() 必须在子类 constructor 中显式调用且必须在 this 使用前子类构造函数中若定义了 constructor就必须第一件事调用 super()否则会报错 ReferenceError: Must call super constructor before accessing this。这是因为JS 引擎在子类 constructor 执行时不会自动为 this 绑定父类初始化后的对象 super() 的作用是触发父类 constructor并将新创建的空对象由 new 创建作为 this 传入父类完成属性赋值和内部初始化 只有 super() 执行完毕this 才被“激活”之后才能访问或赋值 this.xxx。super() 实际调用的是父类的 constructor且影响 new.targetsuper() 并非简单跳转到父类函数体而是以当前 new 表达式的目标构造函数即子类为 new.target去执行父类 constructor。这意味着父类 constructor 内的 new.target 指向的是子类不是父类本身这对依赖 new.target 的逻辑如抽象类校验、动态实例化至关重要 如果父类 constructor 也调用了 super()比如多层继承该链会逐级向上直到基类通常无 super() 或调用 Object 的 constructor 若父类没有定义 constructorJavaScript 会隐式提供一个等价于 constructor(...args) { super(...args); } 的构造器。super 也可用于访问父类原型上的方法和属性非构造阶段在子类的普通方法包括 getter/setter、async 方法等中super.xxx 是合法语法用于显式调用父类原型上同名的方法或读取属性 MacsMind 电商AI超级智能客服