如何将`this`上下文传递给事件处理程序?

10 浏览
0 Comments

如何将`this`上下文传递给事件处理程序?

我知道这个问题并没有太多意义,但让我试着澄清一下。

我有一个名为ScrollBanner的类,大致如下(为了简洁省略了很多内容):

function ScrollBanner() {
    this.initialize = function(selector) {
        $('span#banner1-nav').click(this._onClickNavigation);
    }
    this._onClickNavigation = function(event) {
        this.restartTimer(); // this == span#banner1-nav元素
        //...
    }
    this.restartTimer() {
        //...
    }
}

如您所见,this.initialize将点击处理程序设置为this._onClickNavigation。有些人可能希望事件处理程序内的this指向ScrollBanner实例,但遗憾的是它并不是这样。它指向触发点击事件的元素,即span#banner1-nav

如何使this指向ScrollBanner类实例的最佳方法是什么?

0