Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对子类调用super()时发生javascript抛出错误_Javascript_Node.js_Class_Ecmascript 6 - Fatal编程技术网

对子类调用super()时发生javascript抛出错误

对子类调用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 =

我正在尝试学习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跑步服务

但我明白了:

   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=新人类()