Foros del Web » Programando para Internet » Javascript »

Funcion como parametro????

Estas en el tema de Funcion como parametro???? en el foro de Javascript en Foros del Web. Hola a todos nuevamente, aca un problema en el desarrollo, me gustaria saber si es factible pasar como parametro una funcion. algo asi: Código: function ...
  #1 (permalink)  
Antiguo 07/02/2008, 09:31
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años, 2 meses
Puntos: 4
Funcion como parametro????

Hola a todos nuevamente, aca un problema en el desarrollo, me gustaria saber si es factible pasar como parametro una funcion. algo asi:
Código:
function fun1(){
  ...
}

function funs(fun){
   ... aqui ejecutar fun1
}
Entiendo que lo puedo llamar directamente con el nombre dentro de funs, pero la idea no es esa, si no que al pasar como parametro una funcion puedo yo invocar a cualquier funcion que deseo:
Código:
function fun1(){
  ...
}
function fun2(){
  ...
}
function fun3(){
  ...
}
function funs(fun){
   ... aqui ejecutar funX
}
// donde haria algo asi para invocarlo...
 funs(funcion_que_yo_elija);
La idea es poder invocar a cualquier funcion, jeje , se podra...???
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #2 (permalink)  
Antiguo 07/02/2008, 09:46
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Funcion como parametro????

se puede, las funciones son objetos. debes invocar al método call de cada una:

function funs (fun) {
...
fun.call();
}
  #3 (permalink)  
Antiguo 07/02/2008, 10:10
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 meses
Puntos: 45
Re: Funcion como parametro????

Hola Bellenger:

No hay problema en hacer ésto:
Código PHP:
function f1() { alert("Soy f1"); }
function 
f2() { alert("Soy f2"); }
function 
f3() { alert("Soy f3"); }

function 
ejecutor) {
    
f();
}

ejecutorf3 ); 
O como bien dice plus_ultra:
Código PHP:
function ejecutor) {
    
f.call();

Si necesitas pasar argumentos a la función f, necesitarás usar los métodos call() o apply(), que son muy parecidos.
Código PHP:
function fx(x) { alert("Soy "+x); }

function 
ejecutor(farg) {
    
f.call(windowarg);
}

ejecutorfx"yo" ); 
Código PHP:
// suma todos los números que le pases por argumento
function sumatorio() {
    for(var 
resultado=0i=0i<arguments.lengthi++)
        
resultado += arguments[i];
    
alert(resultado);
}

function 
ejecutor(fargs) {
    
f.apply(windowargs);
}

ejecutorsumatorio, [10152512] ); 
Quizás son métodos un poco confusos al principio, pero luego se ve que son muy útiles. Por cierto el window ese que ves ahí es el objeto padre de la función f, por lo tanto window.f() es lo mismo que f(); pero si tienes un objeto que es coche y quieres llamar a su acelerar() sería acelerar.apply(coche, [parametro1, parametro2...]).


Espero que te sirva. Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 07/02/2008, 11:02
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años, 2 meses
Puntos: 4
Re: Funcion como parametro????

OK muchachos, gracias a todos por las respuestas caramba como me habia olvidado del call, jajaj en fin probare haber como me y luego comento,
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #5 (permalink)  
Antiguo 07/02/2008, 12:51
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 20 años, 2 meses
Puntos: 4
Re: Funcion como parametro????

Caramba funciono a la perfeccion con el call(), pero eso del apply, me tira que parece a JSON, o solo es mi dolor de cabeza que me hace pensar eso
Gracias nuevamente...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #6 (permalink)  
Antiguo 07/02/2008, 15:53
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 meses
Puntos: 45
Re: Funcion como parametro????

Cita:
Iniciado por Bellenger Ver Mensaje
Caramba funciono a la perfeccion con el call(), pero eso del apply, me tira que parece a JSON, o solo es mi dolor de cabeza que me hace pensar eso
Bueno, JSON se puede meter donde quieras... no sé a qué te suena el JSON, quizás a la manera de escribir un array así:
Código PHP:
var miArray = [123113521212]; 
Porque otra cosa parecida, no hay. Ya sabes que es equivalente a new Array(12, 31, 13, 52, 1212);


call() y apply() son prácticamente iguales, donde una hace:
Código PHP:
metodo.call(objetoparam1param2param3); 
La otra hace:
Código PHP:
metodo.apply(objeto, [param1param2param3]); 
Siendo más cómoda apply ya que tenemos englobados en un mismo array todos los parámetros. Con call() sería más dificil construir la sentencia de llamada, aunque es útil para llamar sin parámetros o únicamente con uno (pero como he dicho no está limitada a eso).



Saludos
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:48.