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();