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()扩展
网友评论