对子类调用super()时发生javascript抛出错误
我正在尝试学习ES2015 JavaScript类,我开始编写如下代码: 文件:index.js对子类调用super()时发生javascript抛出错误,javascript,node.js,class,ecmascript-6,Javascript,Node.js,Class,Ecmascript 6,我正在尝试学习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 =
/* 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跑步服务
但我明白了:
SyntaxError: index.js: super() outside of class constructor (14:3)
12 |
13 | construct(){
> 14 | super();
| ^
15 | }
我错过了什么
节点版本:6.2.1构造函数的名称是
constructor
,而不是construct
。看
因此,
construct
被解释为一种普通方法。如错误所示,super
只能在构造函数内部调用,而不能在普通方法中调用。构造函数的名称是constructor
,而不是construct
。看
因此,
construct
被解释为一种普通方法。如错误所示,super
只能在构造函数内部调用,而不能在普通方法中调用。原因是您使用的是construct
关键字,而不是constructor
。只能从类的constructor()
调用super()。这就是为什么会出现错误
另外,您不需要将Human
类指定为const
,并且可以在类声明之后直接使用它
let Person = new Human();
有关ES6等级的更多详细信息,请参阅:
类的东西{
构造函数(){
log(“对象构造函数”);
}
}
/*儿童班*/
类人类延伸物{
构造函数(){
超级();
}
}
设p=新人类()代码>原因是您使用的是construct
关键字,而不是constructor
。只能从类的constructor()
调用super()。这就是为什么会出现错误
另外,您不需要将Human
类指定为const
,并且可以在类声明之后直接使用它
let Person = new Human();
有关ES6等级的更多详细信息,请参阅:
类的东西{
构造函数(){
log(“对象构造函数”);
}
}
/*儿童班*/
类人类延伸物{
构造函数(){
超级();
}
}
设p=新人类()代码>