У мене виникає питання, як трактується "цей" покажчик у сценарії вкладених функцій.
Скажіть, я вставляю наступний зразок коду на веб-сторінку. Я отримую помилку, коли я називаю вкладену функцію "doSomeEffects ()". Я перевірив у Firebug, і це вказує, що коли я перебуваю в цій вкладеній функції, покажчик "цей" насправді вказує на глобальний "віконний" об'єкт - чого я не очікував. Я не повинен щось правильно розуміти, тому що я думав, коли я оголосив вкладену функцію у межах функції об'єкта, вона повинна мати "локальну" область по відношенню до функції (тобто вказівник "цей" посилався б на сам об'єкт, як як це в моєму першому висловленні "якщо").
Будь-які вказівки (каламбур не призначений) будуть вдячні.
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();
this
посилається на об'єкт, для якого викликається функція.
var self = this;
а потім звернутися до self
внутрішньої функції через закриття.
doSomeEffects
не асоціюється з яким-небудь об'єктом, зокрема, тому this
вважається вікном, матір'ю всіх елементів.