Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/09/2005, 16:07
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 7 meses
Puntos: 45
Ante todo gracias por responder kepawe.

Lo que me planteas me abre los ojos, porque no sabia que se podia hacer esto:
Código PHP:
function f(x,y) {
    return 
x*y;
}

function 
ejecutador(fun,x,y) {
    
alert( eval(fun)(x,y) );
}

ejecutador(f,2,3); 
Lo que yo hacia, precariamente, era extraer el nombre de la funcion (con tratamiento de cadenas), y ocuparme de los argumentos como has hecho tu:

Código PHP:
function ejecutador(funcion) {
    
//guardamos el nombre, para llamarla
    
var nombre=funcion.toString().substring("function ".lengthfuncion.toString().indexOf("(") );
    
//guardamos tambien los argumentos
    
var argumentos="";
    for(var 
a=1;a<arguments.length;a++)
        
argumentos+=arguments[a]+",";
    
argumentos=argumentos.substring(0,argumentos.length-",".length);    //le quitamos la ultima coma 
Y luego llamaba a la funcion, segun fuera el navegador, con la idea de caricatos:

Código PHP:
        //Caso Internet Explorer
    
if(document.all) { 
        eval(
funcion);
        return eval(
"window['"+nombre+"']("+argumentos+")"); 
    } 
    
//Otros casos
    
else { 
        var 
scrNuevo document.createElement("script"); 
        
scrNuevo.innerHTML funcion
        
document.body.appendChild(scrNuevo); 
        return eval(
nombre+"("+argumentos+")");
    } 

Asi que bueno, si esta solucionado el tema, podemos dar la duda como despejada.


Gracias a los dos otra vez!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.