Foros del Web » Programando para Internet » Javascript »

this en Objetos

Estas en el tema de this en Objetos en el foro de Javascript en Foros del Web. Buenas: Mi consulta es brevemente como puedo acceder a una propiedad de un obj estando dentro de dos metodos anidados del mismo. Ejemplo, si la ...
  #1 (permalink)  
Antiguo 18/03/2009, 14:31
Avatar de Viet  
Fecha de Ingreso: octubre-2003
Ubicación: Mar del Plata - Argentina
Mensajes: 247
Antigüedad: 20 años, 7 meses
Puntos: 2
Pregunta this en Objetos

Buenas:

Mi consulta es brevemente como puedo acceder a una propiedad de un obj estando dentro de dos metodos anidados del mismo.
Ejemplo, si la clase es "A" y la propiedad es "b", y tiene el metodo "c" donde llama a metodo "d" de otro objeto y quiero acceder dentro de "d" a "this.b".

En codigo es mas simple de entender
Código PHP:
function A(){
  
this.0;
  
this.= function(){
        
otro_objeto.d(function(){
                 
this.1;
        } );
    } 

si yo hago a = new A(); a.c(); a.b; me devuelve 0, cuando deberia ser 1.

Espero que se entienda..
__________________
Keep it simple and keep it fast.
  #2 (permalink)  
Antiguo 18/03/2009, 15:50
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: this en Objetos

Tu problema es que, por mucho que ahí en tu código la llamada a otro_objeto.d() aparezca dentro de la definición de A.c(), en la realidad otro_objeto.d() estará definida en algún otro sitio y no tiene ninguna relación con A.c() ni con A.

Necesitas pasarle explícitamente a d o a la función que le pasas a d, una referencia del objeto sobre el que quieres actuar, porque is no, de otro modo, no tiene forma de conseguir esa referencia.
  #3 (permalink)  
Antiguo 18/03/2009, 16:29
Avatar de Asgaroth  
Fecha de Ingreso: abril-2007
Mensajes: 79
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: this en Objetos

Asi es venkman tienes que pasar la referencia al objeto, de otro modo ese this the tienes hay esta haciendo referencia a "otro_objeto" y no a "A"
  #4 (permalink)  
Antiguo 19/03/2009, 07:40
Avatar de Viet  
Fecha de Ingreso: octubre-2003
Ubicación: Mar del Plata - Argentina
Mensajes: 247
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: this en Objetos

Gracias por las respuestas, imagine que el problema era ese. Pero lamentablemente no puedo modificar los parametros de otro_objeto.d, ya que es una funcion de jquery que no puedo modificar cuando la instancia y los parametros que le pasa.
Pero igual encontre la solucion haciendo esto:

Código PHP:
function A(){
  var 
manage this;
  
this.0;
  
this.= function(){
        
otro_objeto.d(function(){
                 
manage.1;
        } );
    } 

No se por que pero parece funcionar bien con una instancia de A. Pero intuyo que no será asi cuando tenga varias.
__________________
Keep it simple and keep it fast.
  #5 (permalink)  
Antiguo 19/03/2009, 08:23
Avatar de Asgaroth  
Fecha de Ingreso: abril-2007
Mensajes: 79
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: this en Objetos

Si asi funciona bien, de hecho ahora para la funcion "c" "manage" es una variable global, lo que pasa con "this" es que es una variable especial, si estas usando Jquery no deberias tener problema con eso, creo que tiene una funcion que se llamaba "bind" que es especialmente para arreglar eso.

Por lo menos en Mootools y en Prototype la hay, y estoy seguro que en Jquery tambien pero no se exactamente como es.
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 14:02.