我尝试在 JavaScript 中创建子类,但遇到与在子类构造函数中使用 this 相关的错误。这是我正在使用的代码:
class Mammals {
// No constructor defined explicitly
}
class Humans extends Mammals {
constructor(name) {
this.name = name;
}
}
const jimmy = new Humans("Jimmy");
console.log(jimmy.name);
我理解,如果基类有一个默认的无参构造函数,JavaScript 应该允许子类构造函数在不显式调用 super() 的情况下运行。我认为由于 Mammals 有一个默认构造函数(因为它没有明确定义),因此 Humans 构造函数不需要调用 super()。
但是,我仍然遇到错误消息:
在访问“this”之前必须调用派生类中的超级构造函数 或从派生构造函数返回
谁能解释一下为什么
谢谢您的帮助!
您从哪里得到这样的想法:如果基类没有构造函数,JavaScript 应该允许子类构造函数在不显式调用 super() 的情况下运行?
JavaScript 需要先调用 super(),然后才能访问
this
,所以假设如果您从不访问 this
,那么是的,您不需要调用 super
,但否则就需要调用。