Foros del Web » Programando para Internet » Javascript »

Llamar a funcion con nombre por cadena

Estas en el tema de Llamar a funcion con nombre por cadena en el foro de Javascript en Foros del Web. Hola foreros, Estoy intentando llamar a una funcion, el problema es que el nombre de la funcion se encuentra como una cadena, como podria llamarla ...
  #1 (permalink)  
Antiguo 19/05/2010, 16:11
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Llamar a funcion con nombre por cadena

Hola foreros,

Estoy intentando llamar a una funcion, el problema es que el nombre de la funcion se encuentra como una cadena, como podria llamarla a la funcion 'mi_funcion' desde 'llamar_funcion' si solo tengo como dato la candea 'mi_funcion' y no como mi_funcion(). Es decir:

Código PHP:
function llamar_funcion()
{
         
nombre_de_la_funcion='mi_funcion';
         
nombre_de_la_funcion();
}

function 
mi_funcion()
{
        
alert('hola mundo');

¿Como puedo hacerlo?
  #2 (permalink)  
Antiguo 19/05/2010, 16:17
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Llamar a funcion con nombre por cadena

utiliza la sintaxis de corchete para indicar el nombre de una funcion o propiedad de un objeto. como quizas ya sabras, las variables y funciones globales se consideran como propiedad del objeto window. entonces, escribes la referencia de window, o del objeto que contenga la funcion o propiedad, seguido un par de corchetes y dentro de este ubicas el string o variable que contiene el string.
Código:
self[variable]();
te recomiendo que busques en la web por javascript square bracket syntax para que te informes.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 19/05/2010, 16:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Llamar a funcion con nombre por cadena

Hola:

Por lo que veo, solo debes invertir las declaraciones... y la función no es una cadena, así que las comillas no valen...

Lo que pone el amigo zerokilled, es correcto, aunque yo suelo usar window en vez de self, pero es lo mismo.

Por cierto para un form de nombre "f"... valen cosas como esta:
window["document"]["forms"]["f"]["submit"]();//...

Si has visto el destripador alguna vez, funciona así...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 19/05/2010, 16:42
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Llamar a funcion con nombre por cadena

Hola zerokilled,

Me ha servido super bien , ahora tengo un problema algo parecido. Imaginate que tengo que llamar a una funcion pero tengo en modo cadena los elementos que le voy a enviar a la funcion, es decir:
Código PHP:
los_datos='cocina,salon';
mi_funcion(los_datos);

function 
mi_funcion(uno,dos)
{
alert(uno);
alert(dos);

¿Como podria hacer para convertir esa cadena "cocina,salon" ? en dos variables para enviar en la llamada de la funcion mi_funcion?

Siento preguntar estas preguntas que son de manual total, pero es que encontrar esto en un manual es bastante dificilillo, jeje... pero es que para encontrarlo me puedo morir, jeje.

Gracias tambien a ti Caricatos!.

ah!... cuando uso el alert(dos); me dice 'undefined'... por que ha interpretado a los elementos como una sola cadena.
  #5 (permalink)  
Antiguo 19/05/2010, 17:27
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Llamar a funcion con nombre por cadena

utiliza la funcion apply de las funciones. apply es una funcion que aplica la funcion a un objeto. en otras palabras es como si esa funcion perteneciera a un objeto. pero en tu caso, no tienes que aplicarselo a un obeto, simplemente la pasas null. los argumentos de apply son: primer argumento es el objeto a aplicar la funcion, segundo argumento es un array que contiene los argumentos para la funcion. aplicado a tu caso, la variable que contiene los argumentos para la funcion, la conviertes en array usando la funcion split diviendo por las comas. y este array se lo pasas a la funcion apply. un ejemplo de como debes invocar apply.
Código:
function fn(...){
...
}

fn.apply(null, array);
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 19/05/2010, 18:17
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Llamar a funcion con nombre por cadena

Hola,

Jeje... perfecto!... la verdad es que llevo un tiempillo haciendo funciones y nunca habia oido hablar de esta funcion, jeje...

Muchas gracias por tu ayuda!... en serio... gracias!.


Hasta prontro!.

Etiquetas: funcion, llamar, nombre, cadenas
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 13:12.