Foros del Web » Programando para Internet » Javascript »

variable de objeto

Estas en el tema de variable de objeto en el foro de Javascript en Foros del Web. Hola a todos!! Tengo un problema con un codigo y no me explico el motivo del error, alguien sabria solucionarme este problema: <!DOCTYPE html PUBLIC ...
  #1 (permalink)  
Antiguo 31/07/2007, 04:55
 
Fecha de Ingreso: marzo-2007
Mensajes: 135
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta variable de objeto

Hola a todos!! Tengo un problema con un codigo y no me explico
el motivo del error, alguien sabria solucionarme este problema:

<!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 = {
texto: null,

Initia:function() {
this.texto = "hola";
document.onclick = this.alerta;
},
alerta:function() {

alert(this.texto);
}
}
</script>
</head>

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

En la linea de codigo donde pone -> this.texto = "hola"
deberia asignarle el texto a la variable, pero cuando
se produce onclick alerta 'undefined' como es esto asi?
Sin embargo si this.texto lo defino dentro de la funcion
alerta() funciona correctamente.

Muchas gracias.
  #2 (permalink)  
Antiguo 31/07/2007, 08:37
Avatar de 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.
  #3 (permalink)  
Antiguo 31/07/2007, 15:13
 
Fecha de Ingreso: marzo-2007
Mensajes: 135
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: variable de objeto

MAs que claro Derkenuke, muchas gracias ...
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 18:28.