一、jQuery.extend()
将jQuery看成一个类,jQuery.entend(),就可以理解成是对jQuery 的一个扩展
例如:
$.extend({ speak:function(){ alert('say') } }) // 调用方式 $.speak()
这个扩展也就是所谓的静态方法,只跟这个类本身有关。跟你具体的实例化对象是没关系的。也就是说无需实例化对象即可调用,----静态方法 扩展
二、jQuery.fn.entend()
从字面理解嘛,这个拓展的是jQuery.fn的方法. jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。
例如:
$.fn.extend({ speak:function(){ alert('say') } }); // 调用方式 $('div').speak()
这个扩展就是 对实例对象的扩展。jQuery是一个封装得非常好的类,比如我们用 语句 $(“#btn1″) 会生成一个 jQuery类的实例。所以jQuery.fn.extend拓展的是jQuery对象(原型的)的方法啊!
三、两者区别
1、调用方式不同:
jQuery.extend(),一般由传入的全局函数来调用,主要是用来拓展个全局函数,如$.init(),$.ajax();
jQuery.fn.extend(),一般由具体的实例对象来调用,可以用来拓展个选择器,例如$.fn.each(),$('div').click();
2、两者的主要功能作用不同:
jQuery.extend(object); 为扩展jQuery类本身,为自身添加新的方法。
jQuery.fn.extend(object);给jQuery对象添加方法
3、大部分插件都是用jQuery.fn.extend()
四、jQuery.entend() 特殊用法
将 a1,a2 扩展到b中,并返回复制给c
var a1 = {'a':1,'b':2},a2 = {'a':'aaa'},b = {'c':222,'d':'jmz'}; var c = $.extend(b,a1,a2); // c == b=={c: 222, d: "jmz", a: "aaa", b: 2}