Я все еще привык к синтаксису javascript. Я пытаюсь связать действия с нажатиями клавиш, и есть некоторая связь здесь, которую я не вижу. Почему случай switch
вызывается без проблем, но вызываемая им функция никогда не выполняется?вызов функции javascript не работает
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
}
Я думаю, что это единственный соответствующий код, но я рад опубликовать больше, если это полезно. Спасибо за вашу помощь.
Может быть, потому что 'this' является ссылкой на событие, а не вызываемый? Какова ваша сфера? Это обернуто внутри блока? –
контекст вашей функции 'handleKeyPress' переопределяется jQuery. Чтобы этого избежать, вы можете явно привязать контекст самостоятельно: '$ (document) .keydown (this.handleKeyPress.bind (this))' – Hamms
, если вы 'console.log (this)' внутри оператора switch. 'this' не в том контексте, который вы ожидаете. Почему вы используете 'this'? Это внутри другого объекта? Если вы не обновляете свое определение до 'var turn = function (direction) {...}' и внутри case используйте 'turn ('left')'. – scrappedcola