jQuery.extend 和 jQuery.fn.extend

1.jQuery.extend

  我们先把jQuery看成了一个类,这样好理解一些。jQuery.extend(),是扩展的jQuery这个类。

  假设我们把jQuery这个类看成是人类,能吃饭能喝水能跑能跳,现在我们用jQuery.extend这个方法给这个类拓展一个能唱歌的技能。这样的话,不论是男人,女人,xx人.....等能继承这个技能(方法)了。

  

  现在可以直接调用它了 $.sing(); 就会打印出 sing,但是这里跟以前的jquery不同( $("") ); 此时这里的 sing() 方法(静态方法)就变成jQuery这个类本身的方法 现在能够唱歌。

  但是这个方法只代表jquery这个类本身。这个扩展方法就表示的是静态方法 只跟类本身有关 跟具体的实例化对象没有关系。

  典型的类似于 $.each()。$.each()函数不同于JQuery对象的each()方法,它是一个全局函数,不操作JQuery对象而是以一个数组或者对象作为第1个参数,

  以一个回调函数作为第2个参数。回调函数拥有两个参数:第1个为对象的成员或数组的索引,第2个为对应变量或内容。下面就是$.each()的 具体实现

  

2.jQuery.fn.extend

  首先 我们来看看fn是什么 源码如下:

  

  原来jQuery.fn=jQuery.prototype,就是原型啊。jQuery.fn.extend拓展的是jQuery对象(原型的)的方法!就是实例化

  例如 $("#abc") 就是一个实例化的jQuery对象 。 所以jQuery.fn.extend扩展的方法 要用在对象上才行

  假设 jQuery.fn.extend({

      xyz : function (){}

  });

  $('selector').xyz(); // 这样才是正确的用法 如果$.xyz(); 

  

  jQuery.extend()这个方法,主要是用来拓展个全局函数啦,例如$.ajax()这种,要不就是拓展个选择器啦,例如$.fn.each(),当选择器用。大部分插件都是用jQuery.fn.extend()。

原文地址:https://www.cnblogs.com/syomm/p/5716583.html