jQuery.extend()
此方法可以用一個或者多個物件來擴充套件指定的物件,並返回擴充套件後的物件。
語法結構一:
[JavaScript] 純文字檢視 複製程式碼jQuery.extend(target [, object1 ] [, objectN ])
引數解析:
(1).target:一個物件,目標物件,object1-objectN物件的屬性或者方法將會被附加到它身上,如果target是唯一的引數,那麼它將被附加到jQuery物件(類)。
(2).object1-objectN:可選,它們的屬性或者方法將會被附加到target物件身上。
jQuery1.0版本新增。
語法結構二:
[JavaScript] 純文字檢視 複製程式碼jQuery.extend([deep ], target, object1 [, objectN ])
引數解析:
(1).deep:可選,布林值,用來指示是否進行深度拷貝;true為深度拷貝,false為淺拷貝,預設false。特別說明:預設是false,但是我們不能顯示規定引數是false,不會進行合併操作。
(2).target:一個物件,目標物件,object1-objectN物件的屬性或者方法將會被附加到它身上,如果target是唯一的引數,那麼它將被附加到jQuery物件(類)。
(3).object1-objectN:可選,它們的屬性或者方法將會被附加到target物件身上。
jQuery1.1.4版本新增。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var antzone={ webName:"螞蟻部落", age:3 } var oneObj={ address:"青島市南區", source:"javascript教程" } var twoObj={ target:"互助學習", enName:"antzone" } jQuery.extend(antzone,oneObj,twoObj) console.log(antzone)
以上程式碼可以將物件oneObj和twoObj擴充套件至物件antzone,也就是說原物件antzone已經被修改。
結果截圖如下:
如果僅僅是單純合併object1至objectN物件,可以將target設定為一個空物件,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var oneObj={ address:"青島市南區", source:"javascript教程" } var twoObj={ target:"互助學習", enName:"antzone" } jQuery.extend({},oneObj,twoObj) console.log(jQuery.extend({},oneObj,twoObj))
合併後的結果截圖如下:
如果方法只有一個引數,也就是說只有target引數,那麼就是將其擴充套件至jQuery物件,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼jQuery.extend({func:function(){ console.log("螞蟻部落"); }}) jQuery.func()
也就是為jQuery新增了一個靜態方法。
深度拷貝:
下面就介紹一下此方法的第一個引數deep,它是一個布林值,如果為true表示進行深度拷貝。
先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼var antzone={ webName:"螞蟻部落", age:3, innerObj:{ done:"奮鬥" } } var Obj={ address:"青島市南區", innerObj:{ target:"互助學習", enName:"antzone" } } jQuery.extend(antzone,Obj) console.log(antzone)
兩個物件內部都有巢狀的物件innerObj,但是合併結果是第二個覆蓋了第一個物件,截圖如下:
程式碼如下改成深度拷貝以後執行結果如下:
從以上程式碼可以看出,內部巢狀的物件也進行了合併。當然內部巢狀的物件必須是同名的。