Javascript &引用;ReferenceError:未定义此项";在子类中
我有一些代码:Javascript &引用;ReferenceError:未定义此项";在子类中,javascript,node.js,ecmascript-6,extends,Javascript,Node.js,Ecmascript 6,Extends,我有一些代码: "use strict"; class Node { constructor() { } } class Person extends Node { constructor() { } } const fred = new Person(); 在节点v4.2.4中运行时,会出现以下错误: ReferenceError: this is not defined at Person (/home/chris/test.js:12:3) 其中第12
"use strict";
class Node {
constructor() {
}
}
class Person extends Node {
constructor() {
}
}
const fred = new Person();
在节点v4.2.4中运行时,会出现以下错误:
ReferenceError: this is not defined
at Person (/home/chris/test.js:12:3)
其中第12行是Person::constructor的结束括号
为什么我不能扩展节点类?您需要调用构造函数:
class Person extends Node {
constructor() {
super();
}
}
作为参考,我实际上在上测试了您的代码,这在控制台中给出了一条非常好的描述性错误消息
未捕获的语法错误:未知:第10行:派生构造函数必须调用super()
在Person类的构造函数中,有必要调用super(): 这是强制性的,如中所述
该错误消息并不是真正明确的,但我猜它是由继承的内部实现引起的。由于您不调用父类的构造函数,因此在实例化fred对象时,对“this”的某些内部使用必然会导致“this”解析问题。或者,如果两个构造函数都是空的,则它们可能会忽略这两个构造函数,谢谢。
8 |
9 | class Person extends Node {
> 10 | constructor() {
| ^
11 |
12 | }
13 | }
"use strict";
class Node {
constructor() {
}
}
class Person extends Node {
constructor() {
super();
}
}
const fred = new Person();