必须在子类构造函数开头调用super()且仅一次;若定义constructor则必须显式调用super()并置于首行,否则报错;即使无参也需super();不可在super()前访问this或写其他语句;参数须匹配父类签名;多层继承中每级均需调用直接父类super();未声明constructor时自动插入super()。
必须在子类构造函数的开头调用 super(),且只能调用一次。
JavaScript 和 TypeScript 中,只要子类定义了 constructor,就必须显式调用 super(),而且它必须出现在 constructor 的第一行。否则会报错:ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor。
this 对象具备正确的原型链和初始状态super()(空调用)super() 前访问 this,也不能在它前面写其他语句(包括 let/const 声明、return、if 判断等)super(...args) 传入的参数,必须与父类 constructor 的形参顺序和类型一致。
constructor(name, age),子类就得写 super(name, age)
super(name.trim(), Math.max(0, age)),但调用本身仍在第一行如果存在多层继承(A → B → C),每一级子类的 constructor 都必须调用自己的直接父类的 super()。
super(),B 类再调用 A 的 super()
super() 都遵循“第一行”规则如果子类没定义 constructor,JS/TS 会自动补一个空构造函数,并在其中调用 super()。
constructor(...args) { super(...args); }