Javascript 在侦听器内调用函数时出现问题(onClick)

Javascript 在侦听器内调用函数时出现问题(onClick),javascript,function,phaser-framework,Javascript,Function,Phaser Framework,我在这里四处寻找答案,但我找不到任何有效的方法 基本上我在做一个塔防游戏。每个塔都是动态创建的,并且启用了onClick。在onClick侦听器中,我试图调用类中的方法 e、 玩家点击塔,可以选择升级 但是,侦听器中的方法正在输出未定义的函数。我知道这显然与我的工作范围有关。但我不知道我错过了什么 当然应该是这样的: someListener: function(){ this.game.doSomeOtherFunction(); } 我尝试了一个console.log,肯定调用了som

我在这里四处寻找答案,但我找不到任何有效的方法

基本上我在做一个塔防游戏。每个塔都是动态创建的,并且启用了onClick。在onClick侦听器中,我试图调用类中的方法

e、 玩家点击塔,可以选择升级

但是,侦听器中的方法正在输出未定义的函数。我知道这显然与我的工作范围有关。但我不知道我错过了什么

当然应该是这样的:

someListener: function(){
  this.game.doSomeOtherFunction();
}
我尝试了一个console.log,肯定调用了someListener,但是里面的方法没有定义


谢谢,

它不起作用,因为
这将在回调中相应地更改上下文。您可以这样做:

var self = this;
...
someListener: function(){
  self.game.doSomeOtherFunction(); 
}
...
或者你也可以这样做:

someListener: (function () {
       var callback = function(){
          this.game.doSomeOtherFunction(); 
       }
     return callback.bind(this);
}())

我希望它能有所帮助。

在事件侦听器中,它指的是事件发生的元素,而不是外部范围。你需要一个能在变量中保存你想要的范围的闭包。哇,这很有意义。。。谢谢好的,我来看看闭包。:)