Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/07/2007, 08:37
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: variable de objeto

Hola miguelcubas

Verás, creo que te estás confundiendo un poco con lo que representa this. Dentro de un objeto, this se refiere directamente a ese objeto. Por eso en la función Initia(), this se refiere a pruobj.

Pero ocurre que en los eventos, this toma otro carácter. En los eventos this funciona como una referencia al objeto que ha producido tal evento. En tu caso, si el evento es onclick y el objeto es document, un this dentro del manejador del evento document.onclick referenciará a document. Simple y llanamente.

Te he puesto un ejemplo para que lo veas bien:

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=iso-8859-1" />
<
title>D</title>

<
script type="text/javascript">
var 
pruobj = {
    
textonull,
    
Initia:function() {
        
//this se refiere a pruobj
        
this.texto "hola (pruobj)";
        
document.texto "hola (document)";
        
document.onclick this.alerta;
    },
    
alerta:function() {
        
//this se refiere a document (objeto sobre el que se ha hecho click)
        
alert("this.texto = document.texto = "+document.texto +" = "+this.texto);
        
alert("pruobj.texto = "+pruobj.texto);
    }
}

/*
// El onclick de document equivale a poner en cualquier zona del documento:
document.onclick = function() {
    alert(this.texto);            // this = document (objeto sobre el que se ha hecho click)
}
*/

</script>
</head>

<body onload="pruobj.Initia();">
</body>
</html> 


Espero que así te aclares.

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.