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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция возвращает саму себя, Объясните плз 
:(
    Опции темы
Innuendo108
Дата 11.5.2010, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Изучая чужой код, наткнулся на такой фрагмент:


Код

var a = ( function() {

//...
//...

function b() {return a.b();}

//...
//...
//..

}
) ();


2 вопроса:
1) что делает return a.b()
2) что даёт конструкция a = ( function() { ... } )


заранее спасибо за разъяснения

Это сообщение отредактировал(а) Innuendo108 - 11.5.2010, 19:00
PM MAIL   Вверх
bars80080
Дата 11.5.2010, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



ну, по аналогии класс.метод() или объект.метод(), хотя тут конечно это за уши притянуто

в данном случае идёт рекурсия

2) - присваивание переменной а метода. объекту ведь можно дать новое свойство, почему бы не задать ему ещё и метод (функцию)?
PM MAIL WWW   Вверх
Amphiluke
Дата 11.5.2010, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

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



Вообще говоря, похоже на т.н. замыкание. В смысле, и есть замыкание, только хз, что делает. user posted image
PM   Вверх
SelenIT
Дата 11.5.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(Innuendo108 @  11.5.2010,  18:48 Найти цитируемый пост)
2) что даёт конструкция a = ( function() { ... } )

Главное пропущено: a = ( function() { ... } )(). Вызывает выражение в скобках как функцию, и присваивает ее результат переменной а. Да, это замыкание. Именно такая конструкция чаще всего используется для изоляции перменных, чтобы не засорять глобальную область видимости.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Innuendo108
Дата 11.5.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А что такое замыкание? не понял что-то в чём смысл
PM MAIL   Вверх
SelenIT
Дата 11.5.2010, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Смысл - в привязке к функции всех переменных из того контекста, в котором она была вызвана. Вот, имхо, пара неплохих статей про это: http://dklab.ru/chicken/nablas/39.html и http://habrahabr.ru/blogs/webdev/38642/ (стоит также посмотреть обсуждение на форуме и комменты соотв-но).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Innuendo108
Дата 11.5.2010, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




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


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

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