使用依赖注入 return javascript 中的一个函数

using dependency injection to return a function in javascript

有没有办法 return javascript 中的函数而不调用它,但仍然指定参数?我正在使用 node.js 对 javascript 中 angular 的依赖注入系统进行简单的模仿——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!
  };

目前我无法弄清楚如何 return 具有更新的依赖项(作为参数)的函数而不实际调用它,或者只是 return 空对象。有任何想法吗?谢谢!

您可以使用 bind 代替 apply 部分应用函数,returns 它(不执行它):

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