![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Это особенность функций и объектной модели JS - методов не существует. Любая функция вызывается в контексте некоторого объекта, где this будет указывать на этот объект, но какой-либо жёсткой привязки к этому объекту нет. Таким образом функцию можно вызвать "как метод" любого объекта. Выражение _this.refresh просто возвращает функцию в slot'е refresh объекта _this. Функция setInterval вызывает переданную функцию в контексте window, т.е. this внутри функции будет window. В итоге твой код сходит с ума и вылетает.
Оборачивая _this.refresh в closure мы получаем функцию, что не использует this и ей абсолютно по барабану в чьём контексте её выполнят. Т.к. это closure, мы сохраняем весь контекст на момент создания новой функции, в итоге видим _this, от которого и вызываем необходимый метод. Что бы это понять, нужно немного углубиться в функционально (декларативное) программирование и прочитать этот топ. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| 12341234 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 27.2.2008 Репутация: нет Всего: нет |
Sardar, Пасибо большое!!! Очень грамадное!!
Все понятно стало ! |
|||
|
||||
| smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 7 Всего: 259 |
Sardar, а что такое _this? Вроде зарезервированного такого слова нет, присвоения в коде у Samotnik (и его банного клона
Это сообщение отредактировал(а) smartov - 28.2.2008, 19:46 |
|||
|
||||
| 12341234 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 27.2.2008 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |