ES6中的方法原型

时间:2018-07-08 00:17:27

标签: javascript

我想使用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;
    }
}

1 个答案:

答案 0 :(得分:1)

箭头函数没有原型,不能用作对象构造函数。参见MDN

  

箭头函数表达式[...]没有它自己的这个,   参数,超级或 new.target 。这些函数表达式最适合非方法函数,并且它们不能用作构造函数

您可以像这样修复它

ptrdiff_t