在回调上控制“this”上下文

时间:2014-03-13 16:04:29

标签: javascript jquery listener this

我有一个像这样的听众:

this.frame.on('touchend', self.findClosestSlide);

我需要像这样,而不是在匿名函数内部,以便以后能够使用函数名解除绑定。

我的问题是,一旦我进入findClosestSlide函数,我的this对象在逻辑上就变为this.frame

如何访问原始this,或者如何控制我发送到回调函数的上下文? (不使用匿名函数)

2 个答案:

答案 0 :(得分:2)

您可以将this存储在that$this等其他变量中,而不是在findClosestSlide函数中使用它。

答案 1 :(得分:2)

您可以使用Function.bind()或$ .proxy()将自定义上下文传递给回调,例如

跨浏览器,使用$.proxy()

this.frame.on('touchend', $.proxy(self.findClosestSlide, self));

IE9+,请使用function.bind()

this.frame.on('touchend', self.findClosestSlide.bind(self));

为什么呢?因为事件处理程序内部默认this将引用事件所针对的元素