今天大致看了一遍extend方法的源码,特地过来分享一下自己的理解

方法jQuery.extend()和jQuery.fn.extend()用于合并两个或对个对象的属性到第一个对象

syntax:
    jQuery.extend([deep],target,object1,[,objectN])
    jQuery.fn.extend([deep],target.object1,[,objectN])

解释一下参数的具体作用:
参数deep是boolean型,用于表示是否进行递归合并(也叫做深层拷贝)
在此解释一下什么是递归合并,递归合并就是当所要合并的对象具有相同的属性时,只保留其中的一个属性,并舍弃其他的,使合并后属性唯一
deep默认值为false;

来我先举个例子让大家对递归合并混个脸熟

$rel = $.extend({}, //使用空对象作为默认值,这里使用默认值false            
                {vehicle:'Porsche',color: 'red',feature:'import',
                                speed:    {min:'100',max:'200',average:'150'}},
                {vehicle: 'BMW',color:'blue',
                                speed:{min:'20',max:'40'    }}
)//第二个对象多了一个feature属性

//输出为 {vehicle:'BMW',color:'blue',speed:{min:'20',max:'40'}
//如果这里用true的话,speed变为{min:'20',max:'40',average:'150'}                                                                                                                                                                                                                                                                                                                                  

参数target表示合并后的目标对象
参数objectN表示所要进行合并的源对象

但当只提供一个对象时,则忽略目标对象,并将jQuery或jQuery.fn当做目标对象,这个方法用于向jQuery或jQuery.fn对象添加属性,并且这是个添加属性的实用技巧


vincent_xyb
86 声望6 粉丝

如果我没有信念,我那时早死了