Почему каждый плагин jquery заключен в (function ($) {}) (jQuery); - PullRequest
4 голосов
/ 30 декабря 2011

каждый раз, когда я вижу плагин jQuery, подобный этому:

(function($) {
    $.fn.example = function(options) {
        return this.each(function() {
           return 'Example!';
        });
    }

})(jQuery);

Меня интересует функция обтекания:

(function($) {
   // ...
})(jQuery);

Это необходимо?Если да, то почему?А если нет, каковы альтернативы / преимущества?

Ответы [ 3 ]

4 голосов
/ 30 декабря 2011

Это сделано для того, чтобы плагин находился в своей области видимости и никому не мешал.

Многие библиотеки используют $ в качестве ярлыка, поэтому мы передаем jQueryи присвоение ему $, чтобы убедиться, что оно не мешает.

jQuery объясняет его использование в своих документах: http://docs.jquery.com/Plugins/Authoring

2 голосов
/ 30 декабря 2011

Согласен с комментарием Ракеты. От http://docs.jquery.com/Plugins/Authoring:

Но подожди! Где мой удивительный знак доллара, который я знаю и люблю? Это Тем не менее, чтобы убедиться, что ваш плагин не сталкивается с другими библиотеками, которые могут использовать знак доллара, это лучший попрактиковаться, чтобы передать jQuery самозапускающейся функции сопоставляет его со знаком доллара, чтобы он не мог быть перезаписан другим библиотека в сферу ее исполнения.

Это также помогает уважать глобальное пространство имен / предотвращать загрязнение глобального пространства имен. Если вы не попытаетесь - например, присвоив что-то window - любые переменные, которые вы создадите, останутся локальными для вашей функции - и вам не нужно беспокоиться о конфликтах имен с любым другим кодом - в других плагинах jQuery или иным образом - включая использование $.

0 голосов
/ 30 декабря 2011

В основном это делается для того, чтобы плагин закрывался, где знак $ не сталкивается с остальными библиотеками, используемыми вдоль стороны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...