我有一个存储各种函数的对象,其中一个函数定义了一个事件回调函数。在这个回调函数中,假设我想调用属于该对象的其他函数。通常,在回调函数之外,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
?
答案 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')
}
}