Muy buena respuesta
MaBoRaK, llevaba pero que mucho tiempo con este problema, y no sabía cómo resolverlo de manera elegante (mira si me había complicado en mi desesperación...).
Así que se trata de la tontería de
var oThis=this; y de los closures...
Me he fijado que el setTimeout no se puede escribir de otra manera... Si escribimos en String "oThis.BB()" no funcionará, y si la función de dentro del setTimeout la sacamos fuera (con un nombre) tampoco funcionara. Es que, como ves, no entiendo muy bien el ámbito de la variable
oThis. Está disponible para todo el método
BB(), ¿y cómo es que está disponible después en cualquier momento para el
setTimeout()? Si es de ámbito global, ¿por qué entonces si añadimos una nueva instancia de
AA() no se sobreescribe? Es como si el closure fuera un paréntesis cerrado en sí mismo que funciona él solito y para él solito
Por cierto, buenísimos los links, los he repasado de pé a pá. Lo único que hay que tener cuidado es que en
http://developer.mozilla.org mucho contenido es para javascript 1.5 (incluso 1.7), y lo evito leer, para no frustrarme demasiado. Pero esa parte de los objetos no la había leído.
Un saludo y gracias.