jQuery.extend源码深层分析

时间:2023-01-29 18:24:30

  在网站的开发中,经常会自己写一些jQuery插件来方便使用,其中自然少不了一个关键的方法->jQuery.extend(),使用这个方法来扩展jQuery对象。

那么今天就来讲讲这个函数的实现原理。

  这个方法不仅仅可以实现插件,当然也有它本来的功能,扩展对象。like this:

var person = {name:'李四'};
var person2 = $.extend(person,{age:20},{sex:'male'});
//person.name='李四';
//person.age=20;
//person.sex='male';
person2与person扩展后是同一个对象

这个函数的第一个函数指的是要被扩充的对象(target),第二、第三个函数则是附加对象。通俗点将,jQuery将检查target中没有的属性,而在后面两个对象中却存在,那么这些属性将被添加到target中。

那么我们写插件又是怎么回事呢,我们只用了一个参数啊,像这样:

$.extend({
myExtendMethod:function(){
alert('这是我的方法');
}
});

像上面这个例子里,我们的$.extend方法中只有一个Object类型的参数,即:{myExtendMethod},那么这个时候怎么扩展,去扩展谁?target又是什么?当然要扩展的就是我们爱不释手的jQuery了!上一下源码:

 jQuery.extend = jQuery.fn.extend = function() {
var options, name, src, copy, copyIsArray, clone,
target = arguments[0] || {},
i = 1,
length = arguments.length,
deep = false; // 不会满足,因为我们传进来的是Object
if ( typeof target === "boolean" ) {
deep = target;
target = arguments[1] || {};
// skip the boolean and the target
i = 2;
} // 同样不会满足
if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
target = {};
} // length为1,i也为1,所以会走这个条件
if ( length === i ) {
target = this;
--i;
} for ( ; i < length; i++ ) {
// Only deal with non-null/undefined values
if ( (options = arguments[ i ]) != null ) {
// Extend the base object
for ( name in options ) {
src = target[ name ];
copy = options[ name ]; // Prevent never-ending loop
if ( target === copy ) {
continue;
} // Recurse if we're merging plain objects or arrays
if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
if ( copyIsArray ) {
copyIsArray = false;
clone = src && jQuery.isArray(src) ? src : []; } else {
clone = src && jQuery.isPlainObject(src) ? src : {};
} // Never move original objects, clone them
target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values
} else if ( copy !== undefined ) {
target[ name ] = copy;
}
}
}
} // Return the modified object
return target;
};

通过这段代码可以看到第一行的定义,$.extend和$.fn.extend的定义方法为同一个匿名函数,也就是他们是一个方法实现的,只是扩展的对象前者是jQuery,

后者是jQuery.fn =jQuery.prototype也就是 jQuery实例(  $('div')  )。$.fn.extend()就是为jQuery添加实例方法。

ps:如果不了解js原型概念可以看我上一篇文章js创建对象,或者看其他园子的文章。

aaarticlea/png;base64,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" alt="" /> 源码:jQuery.fn= jQuery.prototype

下面就来看看$.extend函数只有一个参数时怎么执行的。

看3行代码的target变量,指定了arguments[0]为它的值,按照刚刚我们定义的插件,就是{myExtendMethod:function(){...}}这个object;

继续往下看,看我21行的注释,this指的是jQuery对象,然后把jQuery赋给了target变量,并且把 i 变成了0 ;

然后进入for循环,在第55行代码的时候,会把我们的参数Object赋给jQuery对象,这样,就把myExtendMethod这个方法添加到jQuery对象上了。

 $.extend({
testMethod: function () {
alert(111);
}
});
$.fn.extend({
testMethod2: function () {
alert(222);
}
});
//调用扩展方法
$.testMethod();//弹出111
$("#List1").testMethod2();//弹出222