Я прочитал шаблон плагинов Милана Адамовского, который он опубликовал в своем блоге:
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
?