“未捕获的ReferenceError:这是没有定义”在类的构造函数

我正在使用JavaScript / ES6中的新东西。 我得到一个Uncaught ReferenceError: this is not defined(...) player.js:5在我的代码。 据我所知,这里没有错误! 这是一个错误? 任何解决方法?

的index.html

 <html> <head> <script type="text/javascript" src="js/entity.js"></script> <script type="text/javascript" src="js/player.js"></script> <link href="css/style.css" rel="stylesheet" type="text/css"> <title>Test</title> </head> <body> <canvas id="screen" width=500 height=500></canvas> <script type="text/javascript">initialize();</script> </body> </html> 

entity.js

 "use strict"; class Entity { constructor() { console.log("Entity"); } } 

player.js

 "use strict"; class Player extends Entity { constructor() { console.log("Created"); // <- error here } } 

这是新类语法的一个事实。 你的子类需要调用super()才能正确初始化类,例如

 super(arg1, arg2, argN); 

与父构造器需要的任何参数。

需要的是,如果执行到达constructor函数的末尾,这个值需要被初始化为某个东西。 你要么需要在一个基类( this是自动初始化),已经调用super()所以this是初始化,或return一个替代的对象。

 class Player extends Entity { constructor() { super(); console.log("Created"); ;// error here } } 

你可以把它看作像constructor函数那样有一个自动return this的结尾。