我正在尝试学习 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();
file: 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
答案 0 :(得分:2)
构造函数的名称是constructor
,而不是construct
。请参阅MDN documentation。
因此,construct
被解释为普通方法。如错误所示,super
只能在构造函数内部调用,而不能在普通方法中调用。
答案 1 :(得分:2)
原因是您使用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();