javascript - 子类中的 "ReferenceError: this is not defined"

标签 javascript node.js ecmascript-6 extends

<分区>

我有一些代码:

"use strict";

class Node {
  constructor() {

  }
}

class Person extends Node {
  constructor() {

  }
}

const fred = new Person();

在 Node v4.2.4 中运行它给出错误:

ReferenceError: this is not defined
    at Person (/home/chris/test.js:12:3)

第 12 行是 Person::constructor 的右括号。

为什么我不能扩展 Node 类?

最佳答案

您需要调用 super构造函数:

class Person extends Node {
  constructor() {
    super();
  }
}

作为引用,我实际上在 es6fiddle 上测试了您的代码,它在控制台中给出了一个非常好的描述性错误消息。

Uncaught SyntaxError: unknown: Line 10: Derived constructor must call super()

   8 | 
   9 | class Person extends Node {
> 10 |   constructor() {
     |   ^
  11 | 
  12 |   }
  13 | }

关于javascript - 子类中的 "ReferenceError: this is not defined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34997063/

相关文章:

javascript - 在 .Net core 的 Angular 应用程序中访问 Api Url

javascript - 响应式 HTML5 视频标签,多个查询

javascript - Mongoose 查询 findOne({params}) 返回 null,即使它在 mongo shell 中成功?

node.js - 在 MAC 上安装 bcrypt

javascript - 优化渲染 React Components 依赖于 props

javascript - SVG 月相

javascript - 当输入字段为空时如何调用 Angular 方法?

javascript - 如何使用 promise 来跳过读取拒绝访问的锁定文件?

javascript - 我如何在 ES5 中的递归匿名函数上应用 TO(尾调用优化)

javascript - 如何相交两个数组并保留 key