Ver Mensaje Individual
  #11 (permalink)  
Antiguo 09/08/2008, 23:01
Avatar de Panino5001
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: Me tira el cartel "Cargando" pero no me carga la pagina!

Lo que sucede es que en ese contexto se crea una situación en donde this no es una referencia al objeto que necesitás referenciar, sino a otro.
Un ejemplo donde quizá se vea más claro es este:
Código PHP:
<script>
function 
test(){
        
this.algo='hola';
    
this.test1=function(){
        
alert(this.constructor);
    }
    
this.test2=function(){
        (function(){
alert(this.constructor);})();
    }
}
t=new test;
t.test1();
t.test2();
</script> 
Como ves, los resultados son diferentes, ya que this, en ese contexto, apunta a diferentes objetos (En explorer el segundo alert muestra undefinded y en los navegadores standard muestra object, pero el primer alert en todos los casos refiere a la función constructora del objeto test)
En cambio, si se referencia a this de manera indirecta, ya funcionará como se necesita:
Código PHP:
<script>
function 
test(){
    
this.algo='hola';
    
this.test1=function(){
        
alert(this.constructor);
    }
    
_this=this;
    
this.test2=function(){
        (function(){
alert(_this.constructor);})();
    }
}
t=new test;
t.test1();
t.test2();
</script> 
En los ejemplos usé constructor, pero el resultado sería el mismo con la propiedad algo.