我仍然习惯了javascript的语法。我正在尝试将动作绑定到按键,这里有一些我无法发现的断开连接。为什么switch
的情况会被调用而没有问题,但它调用的函数永远不会执行?
this.init = function() {
$(document).keydown(this.handleKeyPress);
}
this.handleKeyPress = function(event) {
switch (event.which) {
case 37:
alert("key press"); //this executes
this.turn("left");
break;
case 38:
this.turn("up");
break;
case 39:
this.turn("right");
break;
case 40:
this.turn("down");
break;
}
}
this.turn = function(direction) {
alert(direction); //this does not
}
我认为这是唯一相关的代码,但如果有帮助,我很乐意发布更多相关代码。谢谢你的帮助。
答案 0 :(得分:2)
很可能你遇到的问题是“这个”是什么意思。当你在匿名函数里面时,它指的是匿名函数,而不是它嵌套的外部函数。你可能想要做这样的事情:
var myObj = this ;
myObj.init = function() {
$(document).keydown(myObj.handleKeyPress);
}
myObj.handleKeyPress = function(event) {
switch (event.which) {
case 37:
alert("key press"); //this executes
myObj.turn("left");
break;
case 38:
myObj.turn("up");
break;
case 39:
myObj.turn("right");
break;
case 40:
myObj.turn("down");
break;
}
}
myObj.turn = function(direction) {
alert(direction); //this does not
}