javascript函数调用不起作用

时间:2016-05-16 18:50:25

标签: javascript jquery

我仍然习惯了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
}

我认为这是唯一相关的代码,但如果有帮助,我很乐意发布更多相关代码。谢谢你的帮助。

1 个答案:

答案 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
}