我正在尝试从模块中的另一类扩展一个类。代码如下:
let af = {
MyClass: class {
constructor() {
console.log("constructor of my class");
}
},
myNextClass: class extends this.MyClass { // *
constructor() {
console.log("constructor of the next class");
}
},
myOtherClass: class extends this.MyClass {
constructor() {
console.log("constructor of the other class");
}
},
}
结果控制台中的
引发TypeError:
Uncaught TypeError: class heritage this.MyClass is not an object or null
指向*行。你能帮我解决这个问题吗?
答案 0 :(得分:1)
this
仅在调用对象的方法时设置,而在初始化对象时不可用。
在分配之后,而不是在创建文字之前,也不能引用变量af
。
因此您需要对此进行拆分。在对象文字中定义第一个类,其余的则需要赋值,以便它们可以引用变量。
let af = {
MyClass: class {
constructor() {
console.log("constructor of my class");
}
}
};
af.myNextClass = class extends af.MyClass {
constructor() {
super();
console.log("constructor of the next class");
}
};
af.myOtherClass = class extends af.MyClass {
constructor() {
super();
console.log("constructor of the other class");
}
};
new af.MyClass();
new af.myNextClass();
new af.myOtherClass();