据我可以从Lodash documentation推断,_.bind(func, thisArg, [partials])
只返回func
的版本,其中this
的范围与您传入thisArg
的任何内容绑定{1}}。但是,您需要单独调用该函数,即:
var boundFunction = _.bind(aFunction, aThisTarget);
boundFunction();
有没有办法在lodash中使用_.bind()
或不同的函数,方法可以使用jQuery的.proxy()
,因为它会立即调用传入范围的函数?
我不需要/想要将找到的函数保存到变量中,因为它是回调的一部分。我只想激发一个具有不同范围的函数(立即)。 IE:
this.loadScripts(function() {
// do something
}, $.proxy(this, 'doSomethingElse', 'params') );
答案 0 :(得分:3)
LoDash _.bind
是早期绑定。它需要函数对象和上下文来绑定它。
jQuery $.proxy
(在您的代码中)是后期绑定,它需要键(不是函数本身,而是函数的名称)和上下文。 LoDash也有后期绑定:_.bindKey。
主要区别在于后期绑定是懒惰的:它允许将函数绑定到对象,即使它还没有实际功能:
var context = {}
var myMethod = _.bindKey(context, 'myMethod') // object is still empty
context.myMethod = function () { console.log('context:', this); }
myMethod() // will output proper context
它还允许不在代码中复制上下文名称:)
// bind
_.bind(context.myMethod, context)
// ^ 1 ^ 2
// bindKey
_.bindKey(context, 'myMethod')
// ^ 1
另一方面,早期绑定更明确,因为它需要绑定实际函数,而不是键。
答案 1 :(得分:0)
看看method():
this.loadScripts(function() {
}, _.method(this, 'doSomethingElse', 'params'));