我有一个像这样的听众:
this.frame.on('touchend', self.findClosestSlide);
我需要像这样,而不是在匿名函数内部,以便以后能够使用函数名解除绑定。
我的问题是,一旦我进入findClosestSlide
函数,我的this
对象在逻辑上就变为this.frame
。
如何访问原始this
,或者如何控制我发送到回调函数的上下文? (不使用匿名函数)
答案 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
将引用事件所针对的元素