Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как вызывать функцию каждые 10 секунд 
:(
    Опции темы
Sardar
Дата 28.2.2008, 17:45 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 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
 Оценить мои качества можно тут.
PM   Вверх
12341234
Дата 28.2.2008, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 27.2.2008

Репутация: нет
Всего: нет



Sardar,  Пасибо большое!!!     Очень грамадное!!    
Все понятно  стало !
PM MAIL   Вверх
smartov
Дата 28.2.2008, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Sardar, а что такое _this? Вроде зарезервированного такого слова нет, присвоения в коде у Samotnik (и его банного клона smile ) я тоже не вижу. Что это?

Это сообщение отредактировал(а) smartov - 28.2.2008, 19:46
PM MAIL   Вверх
12341234
Дата 29.2.2008, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 27.2.2008

Репутация: нет
Всего: нет



Цитата(smartov @  28.2.2008,  19:46 Найти цитируемый пост)
 присвоения в коде у Samotnik (и его банного клона  ) я тоже не вижу.

разве я не указал ??...     smile    Исправляюсь !!
Код

var _this = this;

Но  Sardar,   меня  понял    smile    smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.