Jquery 向回调函数传递上下文的最佳实践

Jquery 向回调函数传递上下文的最佳实践,jquery,jquery-ui,Jquery,Jquery Ui,我有一个对象,它有几个方法,我想将其中一个绑定为事件处理程序,但它使用来自同一对象的其他方法。在回调函数中保留上下文的最佳实践是什么? 正如我从jQueryUICore中看到的,用于此目的的常用方法$.proxy,老实说,我不喜欢这种方法,它不是很清楚 你有什么建议吗?提前谢谢 var obj = { someMethod: function(){...}, callback : function(){ ... this.someMethod(); //

我有一个对象,它有几个方法,我想将其中一个绑定为事件处理程序,但它使用来自同一对象的其他方法。在回调函数中保留上下文的最佳实践是什么? 正如我从jQueryUICore中看到的,用于此目的的常用方法$.proxy,老实说,我不喜欢这种方法,它不是很清楚

你有什么建议吗?提前谢谢

var obj = {
   someMethod: function(){...},
   callback : function(){
       ...
       this.someMethod(); // or this.someMethod.call(...)
       ...
   },
};
// wrong
$.bind(elm, obj.callback);
// using $.proxy
$.bind(elm, $.proxy(obj.callback, obj));

你的选择基本上是:

  • $.proxy
    (正如您所指出的)
  • JavaScript 1.8的
  • Function.bind的非本机实现(例如,)
  • 内联匿名函数:
    $.bind(elm,function(){obj.callback.apply(obj,arguments})

这些函数中没有一个比其他函数更好或更差(除了内联匿名函数,它们有点冗长,还有
函数。bind
和friends比
$.proxy
更通用)。更重要的是选择一种方法并保持一致。

另一种方法是使用闭包,但我应该选择另一种方法来组织代码,而不仅仅是对象。