Foros del Web » Programando para Internet » Javascript »

Ejecutar funciones fuera del objeto

Estas en el tema de Ejecutar funciones fuera del objeto en el foro de Javascript en Foros del Web. Estimados Quiero llamar a una función del objeto, pero que esta se ejecute si es creada fuera de el. Por ejemplo, supongan que tengo un ...
  #1 (permalink)  
Antiguo 21/05/2011, 11:08
 
Fecha de Ingreso: septiembre-2007
Mensajes: 17
Antigüedad: 17 años, 2 meses
Puntos: 0
Ejecutar funciones fuera del objeto

Estimados

Quiero llamar a una función del objeto, pero que esta se ejecute si es creada fuera de el. Por ejemplo, supongan que tengo un objeto fadeElement, que cuando el fade termina, ejecuta una método finish() del objeto. Pero este método se ejecutará si es creado fuera del mismo.

Esto me permitiría utilizarlo ucando quiero para que escuche cuando el fade termina.

EJ:

Código:
function fadeElement(e){
       this.element = document.getElementById(e);
       this.finish = finish;
         //Supongan que acá termino el fade y ejecuto la función finish
        this.finish();
         
}

var hidebox = new fadeElement("box");
hidebox.finish = function(){
       alert("ya se oculto");
}
Esto que planteo no funciona, Hay alguna forma de hacerlo funcionar o alguna manera de hacer en javascript lo que quiero?... esto mismo en flash SI se puede hacer.

Desde ya muchas gracias!!!
  #2 (permalink)  
Antiguo 21/05/2011, 11:56
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 19 años
Puntos: 87
Respuesta: Ejecutar funciones fuera del objeto

Hay que añadirlo usando prototype, aqui un ejemplo sencillo:

Código Javascript:
Ver original
  1. function fadeElement(e)
  2. {
  3.     this.mensaje = e;
  4. }
  5.  
  6. var m1 = new fadeElement("Funciona");
  7.  
  8. fadeElement.prototype.mostrar = function()
  9. {
  10. alert(this.mensaje)
  11. }
  12.  
  13. m1.mostrar()

Flash automáticamente crea variables publicas a la instancia de un objeto cuando la variable publica no existe con anterioridad. Aunque eso en flash eso solo afecta a la instancia mas no a todos los objetos de esa clase; aquí afecta a todos los objetos.
  #3 (permalink)  
Antiguo 21/05/2011, 12:13
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, 5 meses
Puntos: 834
Respuesta: Ejecutar funciones fuera del objeto

Podrías generar un método vacío para luego sobreescribirlo y que funcione como pseudoevento, algo semejante a broadcasting. Un ejemplo muy rápido:
Código PHP:
<!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>Documento sin t&#237;tulo</title>
<script type="text/javascript">
function 
fadeElement(e){
       
this.element document.getElementById(e);
       
this.element.style.visibility='visible';
       
this.finish = function(){};//método vacío
       
this.timmer=0;
       
this.ejecutar=function(inicio,fin){
           if(
inicio<fin){
               
clearTimeout(this.timmer);
                
this.element.style.visibility='hidden';
                   return 
this.finish();//llamamos al método vacío
           
}
           
this.element.style.opacity=inicio;
           
this.element.style.filter='alpha(opacity='+inicio*100+')';
           var 
_self=this;
           
this.timmer=setTimeout(function(){_self.ejecutar(inicio-0.05,0)},50);
       }
       
         
}
onload=function(){
    var 
hidebox = new fadeElement("box");
    
hidebox.finish = function(){
       
alert("ya se oculto");
    }
    
hidebox.ejecutar(1,0);
}
</script>

</head>

<body>
<div id="box" style="background-color:#F00">Colocar aquí el contenido para  id "box"</div>
</body>
</html> 
Normalmente en animaciones se suele agregar para poder usar pseudoeventos como onMotionStart, onMotionProgress, onMotionFinished, etc.
  #4 (permalink)  
Antiguo 21/05/2011, 12:26
 
Fecha de Ingreso: septiembre-2007
Mensajes: 17
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Ejecutar funciones fuera del objeto

Gracia a ambos!

InKarC, en mi búsqueda por la solución había probado lo que tu me recomiendas, el problema que había encontrado, era que no puedo ejectuar la función desde dentro de la clase; justamente lo que acaba de solucionar Panino. Brillante! como la función retorna la función!

Un problema menos en mi vida jejeje Muchas gracias!

Etiquetas: fuera, funciones, objeto
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 17:53.