$.extend()和$.fn.extend()

jQuery为开发插件提拱了两个方法,分别是:
$.extend();
$.fn.extend();

一、$.extend()

$.extend(object)

为jQuery类添加类方法,可以理解为添加静态方法。

$.extend({
    min: function(a, b) { return a < b ? a : b; },
    max: function(a, b) { return a > b ? a : b; }
});
$.min(2,3); //  2 
$.max(4,5); //  5

$.extend( target, object1, [objectN])

把两个或者更多的对象合并到第一个当中。

var settings = { validate: false, limit: 5, name: "foo" }; 
var options = { validate: true, name: "bar" }; 
var other = {validate: true,age:24};
var a = jQuery.extend(settings, options);
// 结果: a == {validate: true,limit: 5,name: "bar"}
var b = jQuery.extend({}, settings, options, other);
// 结果: b = {validate: true,limit: 5,name: "bar",age: 24}

二、$.fn.extend()

$.fn

$.fn =$.prototype = { };

$.fn.extend(object)

把对象挂载到jQuery的prototype属性,来扩展一个新的jQuery实例方法。jQuery类的实例可以使用这个“成员函数”。

插件机制:$.fn.extend = $.prototype.extend

三、两者区别

4.1、两者调用方式不同:

  $.extend(),一般由传入的全局函数来调用,主要是用来拓展个全局函数,如$.init(),$.ajax();

  $.fn.extend(),一般由具体的实例对象来调用,可以用来拓展个选择器,例如$.fn.each();

4.2、两者的主要功能作用不同:

  $.extend(object); 为扩展jQuery类本身,为自身添加新的方法。

  $.fn.extend(object);给jQuery对象添加方法

4.3、大部分插件都是用$.fn.extend()扩展

四、参考

http://www.caihaibo.cn/devpro/webfront/3077.html

你可能感兴趣的:($.extend()和$.fn.extend())