调用super()的子类javascript的错误

我正在尝试学习ES2015 JavaScript类 ,我开始这样的代码:

文件: index.js

/* parent class */ class Thing { construct(){ console.log("thing constructor"); } } /* child class */ const Human = class Human extends Thing { construct(){ super(); } } let Person = new Human(); 

文件: package.json

 { "scripts": { "serve": "nodemon index.js --exec babel-node" }, "dependencies": { "babel-cli": "^6.9.0", "babel-preset-es2015": "^6.9.0" } } 

通过运行: $ npm run serve

但我得到这个:

  SyntaxError: index.js: super() outside of class constructor (14:3) 12 | 13 | construct(){ > 14 | super(); | ^ 15 | } 

我在这里错过了什么?

节点版本: 6.2.1

原因是你正在使用construct关键字而不是constructorsuper()方法只能从类的constructor()中调用,而不能在其他地方调用。 这就是为什么你得到错误。

你也不需要将Human类指定为const并且可以在类声明之后直接使用它

 let Person = new Human(); 

有关ES6课程的更多详细信息,请参阅: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

 class Thing { constructor(){ console.log("thing constructor"); } } /* child class */ class Human extends Thing { constructor(){ super(); } } let p = new Human(); 

构造函数的名字是constructor ,而不是construct 。 请参阅MDN文档 。

出于这个原因, construct被解释为一个普通的方法。 如错误所示, super只能在构造函数中调用,而不能用普通的方法调用。