0

我正在尝试获取对象属性并将其转移到按键事件中 - 问题是您只能添加事件本身并且使用 this.x_point 在子函数中不起作用。这是我的代码。我也可以将 this.x_point 转移到 var.x_point 然后使用它,但这完全破坏了它作为对象的意义。

function ninja(name, speed){
this.name = name;
this.speed = speed;
this.x_point = 0;
this.y_point = 0;
loadImages("n_main", 0, 0);
loadImages("n_armL", -5, 8);
loadImages("n_armR", 25, 8);

}

ninja.prototype.move = function(){
window.addEventListener("keydown", keyPress, false);
function keyPress(e){
    if(e.keyCode == 68){ //d
        alert(this.x_point);
    }
}

}

4

2 回答 2

1

您可以为此使用绑定:

ninja.prototype.move = function(){
window.addEventListener("keydown", keyPress.bind(this), false);
function keyPress(e){
    if(e.keyCode == 68){ //d
        alert(this.x_point);
    }
}

或者,如果您使用 jQuery,请尝试使用 jQuery.proxy(keyPress, this)。

于 2013-03-04T13:01:27.743 回答
0

例如,如果您使用that

ninja.prototype.move = function(){
 var that = this;
 window.addEventListener("keydown", keyPress, false);
 function keyPress(e){
  if(e.keyCode == 68){ //d
    alert(that.x_point);
 }
}
于 2013-03-04T12:59:58.570 回答