了解jQuery插件开发模式

根据jQuery插件创作指南 ,基本的插件结构如下所示:

(function($){ $.fn.myPlugin = function( options ) { return this.each(function() { // Do something... }); }; })( jQuery ); 

然而,我在我检查过的几个jQuery插件中看到了以下模式:

 (function($){ $.extend($.fn, { myPlugin: function( options ) { $(this).each( function() { // Do something }); }, }) })(jQuery); 

有人可以解释第二种方法 – 什么是$.extend(...和所有关于对象的符号?

谢谢-

这两个基本上完成了相同的任务,但方式略有不同。

$.fn.myPlugin = …直接将函数分配给jQuery命名空间中所需的位置。

$.extend($.fn, {myPlugin:…正在扩展 $.fn对象,并将对象指定为第二个参数。在这种情况下,对象只包含一个属性myPlugin ,这是要添加的函数。

你可以使用任何一种结构,虽然我个人觉得第一个更清洁。

$.extend函数用于:

将两个或多个对象的内容合并到第一个对象中。

所以这:

 $.extend($.fn, { ... }); 

只是将对象文字的内容合并到$.fn 。 像这样使用$.extend只是另一种做正常/标准赋值的方法:

 $.fn.myPlugin = ...