У меня вопрос о том, как обработчик "this" обрабатывается в сценарии вложенных функций.
Скажем, я вставляю этот следующий пример кода в веб-страницу. Я получаю сообщение об ошибке, когда я вызываю вложенную функцию "doSomeEffects()". Я проверил в Firebug, и это указывает, что когда я нахожусь в этой вложенной функции, указатель "this" фактически указывает на глобальный объект "window", чего я не ожидал. Я не должен правильно понимать что-то, потому что я думал, что, поскольку я объявил вложенную функцию внутри функции объекта, она должна иметь "локальную" область действия по отношению к функции (т.е. Указатель "this" будет ссылаться на сам объект, например как это в моем первом выражении "если" ).
Любые указатели (не предназначенные для каламбуров) будут оценены.
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();