代码。问题是this.play
调用启动函数play()
始终报告错误。我尝试了一些不同的变化但没有工作。
[...]
event_listeners() {
var result;
$(document).on('keypress', function(evt) {
if (evt.which == 49) {
result = 1;
} else if (evt.which == 50) {
result = 2;
} else if (evt.which == 51) {
result = 3;
} else if (evt.which == 52) {
result = 4;
} else if (evt.which == 53) {
result = 5;
} else if (evt.which == 54) {
result = 6;
} else if (evt.which == 55) {
result = 7;
}
console.log(result);
this.play(result);
});
}
play(column) {
console.log('play methode' + column);
var movecount = 0;
availableRow = this._model.checkAvailableRow(column);
if (availableRow === -1) {
$('.won').text("Fehler! Spalte voll!");
return;
}
// Inkrementieren der Variablen, da checkAvailableRow() die Nummer der Zeile zurückgibt, hier aber der Arrayindex benötigt wird
availableRow++;
if (this.checkWin() == true) {
$('.won').html((currentPlayer === "Player 1" ? "Player 1" : "Player 2") + " gewinnt!");
}
if (movecount === 41) {
$('.won').html('Unentschieden!');
}
// Wechsel zum anderen Spieler
this.switchTurn();
movecount++;
}
[...]

执行时,此错误将显示在控制台中。
View.js:63 Uncaught TypeError:this.play不是函数
当我想启动play()
功能时,我做错了什么?
答案 0 :(得分:2)
play
函数超出了范围,因此,它在keypress事件的上下文中不可用。使用this
指的是执行函数的范围(全局范围)。
仅使用play(result)
即可解决问题。
有关this
的详细信息,您可以查看here