“未捕获的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
的结尾。