【问题标题】:using dependency injection to return a function in javascript使用依赖注入在javascript中返回一个函数
【发布时间】:2015-02-23 01:55:14
【问题描述】:

有没有办法在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!
  };

目前我无法弄清楚如何在不实际调用它的情况下返回该函数及其更新的依赖项(作为参数),或者只返回一个空对象。有任何想法吗?谢谢!

【问题讨论】:

    标签: javascript node.js function dependency-injection return


    【解决方案1】:

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

    return func.bind.apply(func, [null].concat(args))
    

    【讨论】:

    • 啊,非常感谢!我不是超级精通javascript,所以这会让我永远找不到。 :)
    【解决方案2】:

    这应该可以解决问题

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 2015-08-05
      • 2019-04-20
      • 1970-01-01
      • 2016-12-30
      相关资源
      最近更新 更多