如何在事件处理函数中访问其他对象函数?

时间:2014-02-26 18:39:15

标签: javascript object

我有一个存储各种函数的对象,其中一个函数定义了一个事件回调函数。在这个回调函数中,假设我想调用属于该对象的其他函数。通常,在回调函数之外,this变量引用函数的对象,但在回调函数中,this引用触发事件的元素。

一个简单的例子:

var objOfFuncs = {
  func1: function() {
    jQelem.on('click', func2);
  },
  func2: function() {
    this.usefulFunc(); // Doesn't work because this no longer referrs to objOfFuncs
  },
  usefulFunc: function(useful) {
    //do useful things
  }
}

我的问题在上述简单例子的背景下表达:

objOfFuncs引用触发this事件的任何内容时,如何在func2中访问click

1 个答案:

答案 0 :(得分:1)

您可以将它作为event.data传递给事件处理程序,这样就不会像使用apply,call或bind那样放松范围

var objOfFuncs = {
  func1: function() {
      jQelem.on('click', {obj: this}, this.func2);
  },
  func2: function(e) {
    e.data.obj.usefulFunc();
  },
  usefulFunc: function(useful) {
    console.log('works')
  }
}

FIDDLE