Шаблон плагина Адамовского - как он использует init и extension - PullRequest
1 голос
/ 07 декабря 2011

Я прочитал шаблон плагинов Милана Адамовского, который он опубликовал в своем блоге:

http://milan.adamovsky.com/2010/02/new-jquery-plugin-pattern.html

Который начинается:

$.fn.extend({ 
    _plugin: null, 
    jQueryInit: jQuery.fn.init 
});

$.fn.extend({
    init: function( selector, context ) {
        return jQuery.fn._plugin = new jQuery.fn.jQueryInit(selector, context);
    }
});

Теперь для меня этот шаблонсоздание / добавление двух новых переменных в jQuery _plugin, то есть null, и jQueryInit, который содержит метод jquery init (метод селектора).

Образец затем extend s сновапереписав метод $.init() новым (идентичным образом) init методом.Я не уверен, что это делает на практике.

Я частично понимаю, почему шаблон поместил метод init в _plugin, поскольку шаблон позже использует его в плагине для получения выбранного элемента./ с.Но не будет ли это иметь последствия для всех других плагинов?Или единственное изменение заключается в том, что он перемещает копию init в место, где может быть достигнут плагин, который мы создаем?

Еще один фрагмент кода, который я не до конца понимаю, находится в конце:

var _p = new MyPluginClass({});

$.fn.pluginName = _p.rc;
$.extend($.fn.pluginName.prototype,_p);
$.extend($.fn.pluginName,_p);

$.fn.pluginName.prototype

$.fn.pluginName

Здесь шаблон "расширяется" $.fn новой переменной с именем pluginName, содержащей метод .rc плагина.Затем он объединяет весь класс с методом .rc;Разве это не просто дублирование, так как extend в любом случае принесет .rc, когда объединит $.fn.pluginName с _p?

...