This question already has answers here:
How to access the correct `this` inside a callback?
                            
                                (11个答案)
                            
                    
                在11个月前关闭。
        

    

我有一个带有功能的对象。这是一个简化的版本:

var app = {

  functOne: function(){
    document.querySelector('button').addEventListener('click', this.functTwo);
  },

  functTwo: function(){
    console.log('Funct Two has Run');
    this.functThree();
  },

  functThree: function(){
        console.log('Funct Three has Run');
  }
};

app.functOne();


functOne中的应用程序将单击处理程序附加到按钮(以启动functTwo)。 FunctTwo应该执行FunctThree,但“ this”的上下文不再是“ app”(现在是按钮)。如何从内部(或传递到)functTwo再次获得“应用程序”(假设应用程序不仅仅像上面的示例那样附加到窗口)。

最佳答案

这可以通过使用Function.prototype.bind()来实现:

  functOne: function(){
    document.querySelector('button').addEventListener('click', this.functTwo.bind(this));
  },

10-06 07:32