打算在这里回答我自己的问题...如果我在下面写的任何内容有误,请纠正我!;)
这篇文章是这样说的:
延长
在我看来,这是创建 jQuery 插件最不习惯的方式。它使用jQuery.fn.extend
方法而不是
jQuery.fn.pluginName
:
(function($){
$.fn.extend({
myPlugin: function() {
return this.each(function(){
// do something
});
},
myOtherPlugin: function() {
return this.each(function() {
// do something
});
}
});
})(jQuery);
如果您需要向 jQuery 添加大量插件方法,您会发现此结构很有用。但是,我认为,如果您的插件需要添加这么多方法,则可能有更好的方法来构建其实现。
我觉得从其他 JS 库过渡的程序员更多地使用 extend 方法。我个人觉得这个简单的$.fn.pluginName
=
结构更容易阅读,更符合你通常在 jQuery 插件中看到的内容。
Superfish JS 使用与上述引用相同的代码;长话短说,showSuperfishUl()
并且hideSuperfishUl()
是jQuery 命名空间中的附加插件$.fn
。
我能够像这样覆盖上述功能:
jQuery(function(){
$.fn.showSuperfishUl = function() {
console.log('OMG');
return this;
};
$.fn.hideSuperfishUl = function() {
console.log('BECKY');
return this;
};
jQuery('ul.sf-menu').superfish();
});
接下来,这篇文章说:
在适用的情况下提供对辅助功能的公共访问
// plugin definition
$.fn.hilight = function(options) {
// iterate and reformat each matched element
return this.each(function() {
var $this = $(this);
// ...
var markup = $this.html();
// call our format function
markup = $.fn.hilight.format(markup);
$this.html(markup);
});
};
// define our format function
$.fn.hilight.format = function(txt) {
return '<strong>' + txt + '</strong>';
};
我们可以很容易地支持选项对象上的另一个属性,该属性允许提供回调函数来覆盖默认格式。这是支持自定义插件的另一种绝佳方式。此处显示的技术通过实际公开格式函数以使其可以重新定义,从而更进一步。使用这种技术,其他人可以发布他们自己的插件自定义覆盖 נ换句话说,这意味着其他人可以为您的插件编写插件。
结论:
两者$.fn.extend
和$.fn.pluginName.function
相似,允许最终用户轻松覆盖功能;前者将新插件添加到 jQuery$.fn
命名空间,而后者是包含在单个$.fn.pluginName
命名空间中的函数。
摘要和最佳实践说:
不要让 jQuery.fn 对象与每个插件的多个命名空间混为一谈。
...因此,我选择的“最佳”技术是$.fn.pluginName.function
.