2015-02-23 6 views
1

Есть ли способ вернуть функцию в javascript, не вызывая ее, но все же определяя параметры? Я работаю на простую имитации системы впрыска зависимости угловой в JavaScript с помощью Node.js - в инъецировать() метод называется так:с использованием инъекции зависимостей для возврата функции в javascript

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! 
    }; 

в настоящее время я не могу понять, как вернуть эту функцию с ее обновленными зависимостей (в качестве аргументов) фактически не называя его, или просто возвращает нулевой объект. Есть идеи? Благодаря!

ответ

2

Вместо apply вы можете использовать bind, которая частично применяет функцию и возвращает его (он не выполняет его):

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

Ах, спасибо большое! Я не супер разбираюсь в javascript, так что это застало бы меня навсегда найти. :) – Emma

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

Смежные вопросы