使用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