将属性转移到对象方法中的事件函数

时间:2013-03-04 12:56:55

标签: javascript events properties

我正在尝试获取一个对象属性并将其转移到一个按键事件中 - 麻烦的是你只能添加事件本身并使用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);
    }
}

}

2 个答案:

答案 0 :(得分:1)

您可以使用bind:

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)。

答案 1 :(得分: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);
 }
}