Mam pytanie dotyczące sposobu traktowania wskaźnika „this” w scenariuszu funkcji zagnieżdżonej.
Powiedzmy, że wstawiam następujący przykładowy kod na stronę internetową. Gdy wywołuję zagnieżdżoną funkcję „doSomeEffects ()”, pojawia się błąd. Sprawdziłem w Firebug i wskazuje, że kiedy jestem w tej zagnieżdżonej funkcji, wskaźnik „this” w rzeczywistości wskazuje na globalny obiekt „window” - czego się nie spodziewałem. Nie mogę rozumieć czegoś poprawnie, ponieważ pomyślałem, że skoro zadeklarowałem zagnieżdżoną funkcję w funkcji obiektu, powinna mieć zasięg „lokalny” w stosunku do funkcji (tj. Wskaźnik „ten” odnosiłby się do samego obiektu jak jak to jest w moim pierwszym stwierdzeniu „jeśli”).
Wszelkie wskazówki (gra słów nie przeznaczona) będą mile widziane.
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();