powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / В чем основная фича делать так, как например это реализовано в jQuery?
12 сообщений из 12, страница 1 из 1
В чем основная фича делать так, как например это реализовано в jQuery?
    #38080790
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Заметил, что например в той же jQuery все плагины и сам jQuery пишется так:

Код: javascript
1.
2.
3.
4.
5.
(function( window, undefined ) {
   var a, b, ...
   // далее весь код библиотеки располагается тут
   ...
})(window);



Я так понимаю, тут как то через замыкание в глобальном объекте window создаются все переменные jQuery.

Зачем так делать? В чем разница между обычным подходом, когда просто создаются глобальные переменные и классы:

var a, b, ...;

..

Есть ли по этому поводу какой-либо best practices?
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38080796
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у Стефанова что-то есть на эту тему... не помню точно, вроде он пишет что так быстрее... почитайте в общем
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38080798
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: javascript
1.
2.
3.
4.
(function() 
{

})();



Вот так делают для того, чтобы объявить функцию без имени и тут же ее выполнить. Т.к. имени нет, больше повторно ее никто случайно не запустит. В функцию нужно оборачивать, чтобы ограничить область видимости тех переменных, к которым доступ не требуется. Соответственно для создания глобальных переменных внутри функции можно и без явного указания window обойтись, но лучше приписывать. а передается параметром этот самый window скорее для гибкости. Чтобы при необходимости можно было бы передать иной объект. Если плагин глобальный и совесть не мешает замусоривать window, то разумеется нет необходимости передавать его параметром, т.к. его имя на данный момент "стандартно".
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38080799
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageВ чем разница между обычным подходом, когда просто создаются глобальные переменные и классы:

var a, b, ...;а и b не засоряют глобальную область, инкапсулируются внутри функции.
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38080806
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем с "undefined" так делают - не очень понятно. Видимо, раньше в каких-то браузерах такого объекта не было, и обращение к нему вызывало ошибку.
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38080893
Pochemuchkin2011
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч,

Возможно, чтобы получить настоящий undefined, если вдруг его переопределил кто-то?
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38081120
12121211212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и window и undefined пробрасываются - чтобы при сжатии компрессором жалось лучше
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38081237
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12121211212и window и undefined пробрасываются - чтобы при сжатии компрессором жалось лучше

с undefined понятно - он сожмется,
в связи с этим вопрос - а это следует применять только лишь там, где в коде много undefined.

но зачем сжимать window - если его можно просто не использовать.
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38081256
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageно зачем сжимать window - если его можно просто не использовать.
Правила хорошего тона - использовать.

P.S.: А компрессорного фанатизма в условиях HTTP 1.1 никогда не понимал.
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38081275
12121211212
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
unicornmirage
с undefined понятно - он сожмется,
в связи с этим вопрос - а это следует применять только лишь там, где в коде много undefined.

up to you

unicornmirageно зачем сжимать window - если его можно просто не использовать.
зависит от того, что вы разрабатываете, можно и не использовать.
но, к примеру, window.addEventListener выглядит несколько более читабельным чем addEventListener,

да и замокать при случае можно, тоже может быть полезно.
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38081554
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, многие рекомендуют инициализировать все свои объекты в своем namespace.
Вот есть к примеру такое замыкание:

window.myNamespace = window.myNamespace || {};
Код: javascript
1.
2.
3.
4.
5.
6.
(function() 
{
    // .. что то делаем

    myNamespace.someClass = ...; // создаем собственный "класс" в своем namespace
})(window.myNamespace);



Анонимная функция при этом отработает один раз, но, она разве не останется висеть в памяти, т.к. через замыкание она удерживается объектом window.myNamespace?
В чем тут эффективность?
...
Рейтинг: 0 / 0
В чем основная фича делать так, как например это реализовано в jQuery?
    #38082117
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageона разве не останется висеть в памяти, т.к. через замыкание она удерживается объектом window.myNamespace?никто никем не удерживается.
код будет таким:

Код: javascript
1.
2.
3.
4.
5.
6.
(function(ns) 
{
    // .. что то делаем

    ns.someClass = ...; // создаем собственный "класс" в своем namespace
})(window.myNamespace);
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / В чем основная фича делать так, как например это реализовано в jQuery?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]