使用依赖注入 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!
};
有没有办法 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!
};