Tengo una pregunta sobre cómo se trata el puntero "this" en un escenario de función anidada.Javascript "este" puntero dentro de la función anidada
Digamos que inserto el siguiente código de muestra en una página web. Aparece un error cuando llamo a la función anidada "doSomeEffects()". Revisé Firebug e indica que cuando estoy en esa función anidada, el puntero "this" apunta en realidad al objeto "ventana" global, lo que no esperaba. No debo entender algo correctamente porque pensé que como declaraba la función anidada dentro de una función del objeto, debería tener un alcance "local" en relación con la función (es decir, el puntero "este" se referiría al objeto mismo como cómo está en mi primera declaración "si").
Cualquier puntero (sin juego de palabras) sería apreciado.
var std_obj = {
options : { rows: 0, cols: 0 },
activeEffect : "none",
displayMe : function() {
// the 'this' pointer is referring to the std_obj
if (this.activeEffect=="fade") { }
var doSomeEffects = function() {
// the 'this' pointer is referring to the window obj, why?
if (this.activeEffect=="fade") { }
}
doSomeEffects();
}
};
std_obj.displayMe();
¿Cuál es exactamente su pregunta? – Sarfraz
Cuando se usa dentro de una función, 'this' se refiere al objeto sobre el cual se invoca la función. – approxiblue
Lo que podría hacer en el ámbito externo es algo como 'var self = this;' y luego referirse a 'self' en la función interna a través del cierre. – Kai