使用dependency injection在javascript中返回一个函数
有没有办法在javascript中返回一个函数而不调用它,但仍然指定参数? 我正在使用node.js在JavaScript中简单模仿angular的dependency injection系统 – inject()方法如下所示:
var injectedFunction = module.inject(function (funcToRegister) { return funcToRegister(); });
而module.inject()函数如下所示:
var inject = function(func) { var args = resolveDependencies(func); // so 'args' is an array of function dependencies, like [Function: funcToRegister] return func.apply(null,args); // not sure how to correctly return this function! };
目前我不知道如何返回函数与其更新的依赖项(作为参数),而不实际调用它,或只是返回一个空对象。 有任何想法吗? 谢谢!
而不是apply
你可以使用部分应用函数的bind
,并返回它(它不会执行它):
return func.bind.apply(func, [null].concat(args))
这应该做的伎俩
var inject = function(func) { var args = resolveDependencies(func); // so 'args' is an array of function dependencies, like [Function: funcToRegister] return func.bind(null,args); // not sure how to correctly return this function! };
Function.bind