我正在玩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
}
}
答案 0 :(得分:63)
这是新类语法的一个事实。您的子类需要调用super()
才能正确初始化类,例如
super(arg1, arg2, argN);
使用父构造函数需要的任何参数。
如果执行到达constructor
函数的末尾,则需要将this
的值初始化为某个值。您需要在基类中(this
自动初始化),调用super()
以便this
初始化,或return
编辑替代对象。 / p>
class Player extends Entity {
constructor() {
super();
console.log("Created"); ;// error here
}
}
您可以将其视为constructor
函数,它们最后会有一个自动return this
。