调用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
关键字而不是constructor
。 super()
方法只能从类的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
只能在构造函数中调用,而不能用普通的方法调用。