Seguindo o que comecei a explicar nesse post sobre como passar funções como parâmetro para outra no javascript, vou mostrar agora rapidamente como passar outros parâmetros – texto, string, o que você precisar.
Esse exemplo abaixo funciona para o caso de você saber exatamente quantos parâmetros serão passados para a função e quantos recebidos pela função de callback.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function wrapper(par1, par2) {
//verifica se o último parâmetro é uma função para chamá-la;
//os demais parámetros são repassados para a função
if(arguments.length>0) {
var lastArgument = arguments[arguments.length-1];
if(typeof(lastArgument)=="function") {
lastArgument.call(this, par1, par2);
}
}
}
function myFunction(par1, par2) {
alert(par1);
alert(par2);
}
wrapper("a", "b", myFunction);
</script>
</head>
<body>
</body>
</html>
O exemplo funciona da seguinte forma: a função wrapper recebe duas strings e uma função. Nela, verifica-se se o último parâmetro é uma funcão e, se for, ela chama essa função passando essas duas strings como parâmetro.
Note que esse exemplo vale para a função sendo passada como último parâmetro. Ela pode ser passada em outra ordem, mas aí deve ser feita a devida checagem.
Nos próximos post, mostro como receber uma quantidade aleatória de parâmetros e tratar de repassá-los (usando JSON) e como definir funções de callback específicas dependendo de condições na wrapper.