Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > this в setTimeout/setInterval |
Автор: Sardar 7.12.2007, 02:32 | ||
Вот так - работать будет. Дело в том, что функция, запускаемая по setTimeout выполняется в контексте объекта window. То-есть слово this, при выполнении этой функции указывает совсем не на MyObj. Чтобы как-то выкрутится введен механизм "замыкания" (closure). Можно поискать информацию на эту тему в Гугле, а если своими словами - то при выполнении любой функции создается объект, содержащий все праметры функции и переменные описаные с помощью var внутри ее (окружение). Если же внутри функции описан объект Function, к примеру так, как в этом примере, то в скрытое поле этого самого Function будет записана ссылка на то окружение, в контексте которого функция описана. Поиск переменных, при выполнении функции производится вниз по списку этих самых процедурных окружений. Таким образом, можно передавать параметры в функции, которые по документации совсем даже не получают никаких параметров... Автор: http://vingrad.ru/@ksnk Источник: http://forum.vingrad.ru/index.php?show_type=&showtopic= |