yo soy un principiante a los cierres (y javscript en general), y no puedo encontrar una explicación satisfactoria en cuanto a lo que está pasando en este código:¿Por qué este cierre no tiene acceso a la palabra clave 'this'? - jQuery
function myObject(){
this.myHello = "hello";
this.myMethod = do_stuff;
}
function do_stuff(){
var myThis = this;
$.get('http://example.com', function(){
alert(this.myHello);
alert(myThis.myHello);
});
}
var obj = new myObject;
obj.myMethod();
Se alerta 'indefinido' y luego 'hola'. Obviamente, esto no debería ser específico de jQuery, pero esta es la forma más simple de mi código original que podría surgir. El cierre en do_stuff()
tiene acceso a las variables en ese ámbito, pero aparentemente esta regla no se aplica a la palabra clave this
.
Preguntas:
¿Qué ocurre con this
cuando el cierre se pasa fuera del alcance de do_stuff()
(en este caso $.get()
)? ¿Contiene myThis
una copia de this
o una referencia al mismo? ¿En general no es una buena idea usar this
en cierres?
Cualquier respuesta muy apreciada.
Iba a pedir un seguimiento, pero su última edición respondió eso. ¡Gracias! – thewiglaf
@thewiglaf: ¡De nada! Siéntase libre de comentar si tiene alguna duda ... – CMS