Como posso passar uma referência a uma função, com parâmetros? [duplicado]
Possível duplicado:
Como predefinir argumentos na chamada de função JavaScript? (Aplicação de Função Parcial)
Eu preciso capazpassar uma referência a uma função com um determinado conjunto de parâmetros.
Aqui está um exemplo de passar uma referênciasem parâmetros:
var f = function () {
//Some logic here...
};
var fr = f; //Here I am passing a reference to function 'f', without parameters
fr(); //the 'f' function is invoked, without parameters
Agora o que eu preciso fazer é passar o mesmof
função, mas desta vez eu precisaria passar parâmetros para a referência. Agora, eu posso fazer isso com uma função anônima e chamar of
função com parâmetros dentro da função recém-criada, como:
var f = function () {
//Some logic here...
};
var fr = function (pars) {
f(pars);
}; //Here I am creating an anonymous function, and invoking f inside it
fr({p : 'a parameter'}); //Invoking the fr function, that will later invoke the f function with parameters
Mas minha pergunta é:Existe uma maneira de passar uma referência direta aof
função Com parâmetros parafr
, mas sem incluí-lo em uma função anônima?
O que eu preciso atribuir afr
para invocá-lo sem parâmetros (fr()
), para que f (1,2,3) seja executado quandofr
é invocado?
[ATUALIZAR] eu seguiJason Buntingresposta deaqui sobre aFunção Parcial e a função JavaScript que ele publica é exatamente o que eu estava procurando. Aqui está a solução:
function partial(func /*, 0..n args */) {
var args = Array.prototype.slice.call(arguments).splice(1);
return function() {
var allArguments = args.concat(Array.prototype.slice.call(arguments));
return func.apply(this, allArguments);
};
}