Foros del Web » Programando para Internet » Javascript »

Call a otra función

Estas en el tema de Call a otra función en el foro de Javascript en Foros del Web. Voy a intentar explicarme. Tengo una función, llamada "función_uno", que recibe una seríe de argumentos de configuración. Y tengo una seríe de multiples funciones, llamadas ...
  #1 (permalink)  
Antiguo 05/03/2012, 09:09
 
Fecha de Ingreso: junio-2008
Ubicación: Madrid
Mensajes: 73
Antigüedad: 15 años, 10 meses
Puntos: 1
Exclamación Call a otra función

Voy a intentar explicarme.

Tengo una función, llamada "función_uno", que recibe una seríe de argumentos de configuración.

Y tengo una seríe de multiples funciones, llamadas "función_deFulanoYOMengano" desarrolladas por separado, que reciben diferentes argumentos a su vez.

He estado revisando bastantes libros y mucho material en internet, pero no consigo hacer que desde la función "función_uno" se llame a la "función_deFulanoYOMengano" con sus argumentos de forma dinámica.

Es decir, este sería el código de lo que más o menos intento explicar, y que obviamente no he conseguido que funcione:
Código:
#JS#
function funcion_uno(arg1, arg2, arg3, fcnToCall, ...)
{
   //configuración
   for (i = 5; i < arguments.length; i++)
     myArgStr += arguments[i].toString();
  
   fcnToCall(myArgStr);
}
Código:
#HTML#
<input type="button" onClick='funcion_uno(arg1, arg2, arg3,  funcion_deFulanoYOMengano, subArg1, subArg2, subArg3);' />

¿Alguna idea?
¿Podría stackear los argumentos variables y llamar a la función con todos esos argumentos restando los que son de mi función?
  #2 (permalink)  
Antiguo 05/03/2012, 09:38
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Call a otra función

Si te entendí bien, lo que estás buscando es algo así:
Código PHP:
<script type="text/javascript">
function 
nn(a,b,c){alert(a+'-'+b+'-'+c);}
function 
uno(a,b,c,f,x,y,z){
    
alert('hacemos algo con '+a+'-'+b+'-'+c);
    var 
arg=[];
    for(
i=4,l=arguments.length;i<l;i++){
        
arg.push(arguments[i]);
    }
    
f.apply(null,arg);
}
uno('a','b','c',nn,'x','y','z');
</script> 
o así:
Código PHP:
<script type="text/javascript">
function 
nn(a,b,c){alert(a+'-'+b+'-'+c);}
function 
uno(a,b,c,f,x,y,z){
    
alert('hacemos algo con '+a+'-'+b+'-'+c);
    
f.apply(null,[].slice.call(arguments,4));
}
uno('a','b','c',nn,'x','y','z');
</script> 
O así:
Código PHP:
<script type="text/javascript">
function 
nn(a,b,c){alert(a+'-'+b+'-'+c);}
function 
uno(a,b,c,f,arg){
    
alert('hacemos algo con '+a+'-'+b+'-'+c);
    
f.apply(null,arg);
}
uno('a','b','c',nn,['x','y','z']);
</script> 
Quizá te interesen también conceptos como partial y curryng:
http://ejohn.org/blog/partial-functions-in-javascript/
http://joseanpg.net/jslab/varios/par..._vs_curry.html

Última edición por Panino5001; 05/03/2012 a las 14:30
  #3 (permalink)  
Antiguo 09/03/2012, 05:58
 
Fecha de Ingreso: junio-2008
Ubicación: Madrid
Mensajes: 73
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Call a otra función

Gracias Panino5001!
Al final opté por una solución diferente.

Etiquetas: call, funcion, html, input, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.