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.