将`this`设置为函数的调用者

时间:2017-11-28 12:57:10

标签: javascript functional-programming

我正在进行的当前项目是创建一个跳棋游戏。

我使用了函数构造函数模式,并且我在其中一个构造函数的原型上设置了一个函数。

我的问题是,this关键字指向全局对象而不是函数的调用者。

如何将this设置为该函数的调用者?

function Piece(x, y, side) {...}

Piece.prototype.getPossibleMoves = () => {

    let possibleMoves = [];

    console.log(this); // returns global object

    if (this.isKing) {
        ...
    } else {
        ...
    }
    return possibleMoves;
}

// Testing

const king = new Piece(5, 5, "bottom");
king.isKing = true;

console.log(king.getPossibleMoves());

这样我想要的功能就是

somePiece.getPossibleMoves()

而不是

Piece.getPossibleMoves(somePiece);

可以实施,但宁愿选择第一,因为它感觉更优雅。

问题是箭头函数表达式“(请参考与常规函数表达式和语句相同的方法!

1 个答案:

答案 0 :(得分:1)

Lambda表达式 - () => {...}没有this 而是尝试:

Piece.prototype.getPossibleMoves = function(){ ... 

就像在我的fiddle中一样,函数按预期工作。