Javascript 为什么在子类中使用super(限定)会在超类中定义引用错误?

Javascript 为什么在子类中使用super(限定)会在超类中定义引用错误?,javascript,inheritance,subclass,superclass,Javascript,Inheritance,Subclass,Superclass,class学校员工{ 建造师(姓名、资质){ 这个。_name=name; 这是._资格=资格; 这个._holidaysLeft=21; } 获取名称(){ 返回此。\u名称; } 获得资格{ 把这个还给我; } 获得假期{ 把这个还给我; } 假期(天){ 这._holidaysLeft-=天; } } 班主任延伸到学校员工{ 建造师(姓名、资格、科目){ 超级(姓名); 超级(资格);//这是错误 这个._subject=subject; } 获取名称(){ 返回此。\u名称; } 获得资

class学校员工{
建造师(姓名、资质){
这个。_name=name;
这是._资格=资格;
这个._holidaysLeft=21;
}
获取名称(){
返回此。\u名称;
}
获得资格{
把这个还给我;
}
获得假期{
把这个还给我;
}
假期(天){
这._holidaysLeft-=天;
}
}
班主任延伸到学校员工{
建造师(姓名、资格、科目){
超级(姓名);
超级(资格);//这是错误
这个._subject=subject;
}
获取名称(){
返回此。\u名称;
}
获得资格{
把这个还给我;
}
获取主题(){
将此返回。\u主题;
}
}
让约翰=新老师(“约翰”,“数学”,“物理”,“数学”),因为您可以查找super()调用父类的构造函数,您将调用它两次。你可能想要的是

class Teacher extends SchoolEmployee {
    constructor(name, qualifications, subject) {
        super(name, qualifications);
        this._subject = subject;
    }
}

SchoolEmployee构造函数需要两个参数,您可以仅使用一个参数调用super。尝试:

super(name, qualifications);

错误清楚地表明,
超级构造函数只能调用一次
。调用构造函数,当父构造函数接受这两个
名称时,限定条件
在一个
super
中传递它们

class学校员工{
建造师(姓名、资质){
这个。_name=name;
这是._资格=资格;
这个._holidaysLeft=21;
}
获取名称(){
返回此。\u名称;
}
获得资格{
把这个还给我;
}
获得假期{
把这个还给我;
}
假期(天){
这._holidaysLeft-=天;
}
}
班主任延伸到学校员工{
建造师(姓名、资格、科目){
超级(姓名、资格);
这个._subject=subject;
}
获取名称(){
返回此。\u名称;
}
获得资格{
把这个还给我;
}
获取主题(){
将此返回。\u主题;
}
}

让约翰=新老师(“约翰”,“数学”,“物理”,“数学”)确切的错误消息是什么?
ReferenceError:这在对象的新教师(D:\MAIN\COding\javascript\classes.js:28:5)中没有定义。(D:\MAIN\COding\javascript\classes.js:45:12)at Module.\u编译(Module.js:570:32)at Object.Module.\u扩展..js(Module.js:579:10)at Module.load(Module.js:487:32)at tryModuleLoad(Module.js:446:12)at Function.Module.\u加载(Module.js.438:3)at Module.runMain(Module.js:604:10)at runMain(Module.js:604:10)at run)(bootstrap\u node启动时(bootstrap_node.js:149:9)