Foros del Web » Programando para Internet » Javascript »

Problema con this y dos objetos relacionados

Estas en el tema de Problema con this y dos objetos relacionados en el foro de Javascript en Foros del Web. Estimados, he estado buscando la forma de hacer lo que explicaré a continuación pero me ha resultado imposible. Mi idea es sencilla: tengo dos objetos ...
  #1 (permalink)  
Antiguo 11/10/2010, 19:44
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Problema con this y dos objetos relacionados

Estimados, he estado buscando la forma de hacer lo que explicaré a continuación pero me ha resultado imposible. Mi idea es sencilla: tengo dos objetos relacionados de tal forma en que uno de ellos crea al otro. El objeto creado "objeto hijo" necesita comunicarse con el objeto creador "objeto padre" de alguna manera para solicitar sus servicios. En otros lenguajes, como PHP, suelo crear al objeto hijo enviando a su constructor una referencia a this para que de esa forma el hijo pueda invocar a métodos del padre. Pero esto me ha resultado imposible con JS.

Este es el código que no me funciona (resumido al máximo para fines didácticos

Código Javascript:
Ver original
  1. function testObject()
  2. {
  3.     var object2=new testObject2(this);
  4.     object2.testFunction();
  5.    
  6.     this.saySomething=function()
  7.     {
  8.         alert('testObject');
  9.     }
  10. }
  11.  
  12. function testObject2(handlerReference)
  13. {
  14.     var handler=handlerReference;
  15.    
  16.     this.testFunction=function()
  17.     {
  18.         handler.saySomething();
  19.     }
  20. }
  21.  
  22. function init()
  23. {
  24.     var object=new testObject();
  25. }

testObject() está creando una instancia de testObject2() enviandole una referencia a this. Luego desde testObject2 trato de acceder al objeto creador pero obtengo el error "handler.saySomething is not a function".

¿Cómo debo hacer para enviar al objeto "hijo" una referencia del padre para utilizar sus métodos?
Gracias de antemano.
__________________
R4DS en español | R4DS en inglés
  #2 (permalink)  
Antiguo 11/10/2010, 20:45
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: Problema con this y dos objetos relacionados

Probá así:
Código PHP:
<script type="text/javascript">
function 
testObject()
{
    
    
this.saySomething=function()
    {
        
alert('testObject');
    }
    
this.initialize=function(){
            var 
object2=new testObject2(this);
        
object2.testFunction();
    }
    return 
this.initialize();
}
 
function 
testObject2(handlerReference)
{
    var 
handler=handlerReference;
    
    
this.testFunction=function()
    {
        
handler.saySomething();
    }
}
 
function 
init()
{
    var 
object=new testObject();
}
init()
</script> 
  #3 (permalink)  
Antiguo 11/10/2010, 20:53
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: Problema con this y dos objetos relacionados

Aunque así, cambiándole el orden, también estaría bien:
Código PHP:
<script type="text/javascript">
function 
testObject()
{
    
    
    
this.saySomething=function()
    {
        
alert('testObject');
    }
    var 
object2=new testObject2(this);
    
object2.testFunction();
}
 
function 
testObject2(handlerReference)
{
    var 
handler=handlerReference;
    
    
this.testFunction=function()
    {
        
handler.saySomething();
    }
}
 
function 
init()
{
    var 
object=new testObject();
}

init()
</script> 
Si no le cambiás el orden el problema es que estás intentando acceder a un método que aún no ha sido interpretado.
  #4 (permalink)  
Antiguo 14/10/2010, 11:08
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Respuesta: Problema con this y dos objetos relacionados

Millones de gracias por la corrección y explicación!
Funciona perfecto .

Saludos.
__________________
R4DS en español | R4DS en inglés

Etiquetas: dos, objetos, relacionados
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 07:25.