深度是一个布尔值,表示是否合并深度,
默认为false,深度合并不
执行。
这样,新的
属性和
方法可以被添加到jQuery或jquery.fn,大多数jQuery的其他模块的实现。
在向jQuery添加
扩展时使用扩展()
如:jquery.extend({添加
功能(A,B){ return a + b } })
用途:美元。添加(1,3)===== > 4;
使用$()。fn.extend的jQuery实例对象添加扩展时;
美元。fn.extend({ GYS:
函数(){ $(this)。Css(颜色
电话:$(div.guo )Gys();
由于
参数的数目不确定,不能接受特定参数。
选项:指向源对象。
名称:源对象的某些属性名称。
目标对象的属性的原始值。
复制:源对象属性之一的值。
CopyIsArray:指示复制数组
复制时原始值的修订值:深度复制。
目标对象。
i源对象的起始下标。
长度的数量:用于
修改可变目标的参数。
是否深:执行深层复制。
333~338:如果第一个参数是一个布尔值,目标被分配到深,目标是重新获得值和分配第二个参数到目标。
此时,i值从前1更改为2。表示源对象最初从第二个元素开始,现在成为第三个元素。
327行代码知道为什么有if语句。最初的函数扩展首先分配给目标和i,而不管参数的
情况如何。
然后把它固定在后面。
341~343:如果目标对象不是一个对象,而不是一个函数,那么目标为{ };
当346 ~ 349:长和我
都是平等的,这意味着参数如objcet1,…等等都没有通过。
此时,当前对象(jQuery或jQuery)是目标对象,而i被减少,因此传入的对象被视为源对象。
351行开始循环,我表示
启动源对象的下标是一个非常聪明的用法。
353行也很好,它将源对象和源对象判断放在语句中,只有源对象在执行时不为空。
354~362行,变量SRC为原值,变量拷贝为拷贝值。如果目标和副本引用相同,则循环对遍历性是无效的,
所以它不包括目标对象的同名属性。如果注释了360行,下面的代码将有一个异常。
var obj = { };
N1 = obj对象;
美元。扩展(真,obj,{ N2:obj });
在不同的
浏览器中会出现不同的
错误,但是现在已经没有网卡
屏幕了。
365~372行,如果是深度合并,复制的副本是普通的Javascript对象或数组,则它是递归合并的。
378~380行,如果不是深度合并,而复制不是未定义的,则直接覆盖目标对象的同名属性。