我想使用ES6编写此文件,但是我遇到了麻烦,需要您的帮助。 当我使用ES6声明我的方法时,方法原型给了我这个错误:
未捕获的TypeError:无法在planesJS.js:238上设置未定义的属性“移动”
let SI = {};
//some SI.Properties that i need...
// SI.SpaceShip = function (options) { // works fine
SI.SpaceShip = (options) => { // gives error
let defaultOptions = {
x: 0,
y: 0,
width: 0,
height: 0,
img: null,
imgX: 0,
}
for (let key in defaultOptions) {
if(options.hasOwnProperty(key)) {
this[key] = options[key];
}
else {
this[key] = defaultOptions[key];
}
}
}
这是原型:
SI.SpaceShip.prototype.move = function (deltaX, deltaY) {
this.x += deltaX;
if(this.x <= 0) {
this.x = 0;
}
else if(this.x >= SI.Sizes.width - this.width) {
this.x = SI.Sizes.width - this.width;
}
this.y += deltaY;
if(this.y <= 0) {
this.y = 0;
}
else if(this.y >= SI.Sizes.height - this.height) {
this.x = SI.Sizes.height - this.height;
}
}
答案 0 :(得分:1)
箭头函数没有原型,不能用作对象构造函数。参见MDN
箭头函数表达式[...]没有它自己的这个, 参数,超级或 new.target 。这些函数表达式最适合非方法函数,并且它们不能用作构造函数。
您可以像这样修复它
ptrdiff_t