物件拷貝語法:$.extend([deep],target,object1,[objectN])
1.deep:如果設為true為深拷貝,默認為false 淺拷貝
2.target:要拷貝的目標物件
3.object:待拷貝到第一個物件的物件
4.objectN:待拷貝到第N個物件的物件
(5.淺拷貝是把被拷貝的物件復雜資料型別中的地址拷貝給目標物件,修改目標物件會影響被拷貝物件)
(6.深拷貝,前面加true,完全克隆(拷貝的物件,而不是地址,會申請一個新的記憶體),修改目標物件不會影響被拷貝物件)
$(function() {
var targetObj = {
id: 0,
msg: {
sex: '男'
}
};
var obj = {
id: 1,
name: 'andy',
msg: {
age: 18
}
};
//淺拷貝把原來物件里面的復雜資料型別地址拷貝給目標物件
// $.extend(targetObj, obj); //會覆寫targetObj里面原來的資料
// console.log(targetObj);
// //淺拷貝哪一個修改了資料,都會受到影響
// targetObj.msg.age = 20;
// console.log(obj);
//深拷貝把里面的資料完全復制一份給目標物件,如果里面有不沖突的屬性,會合并到一起
$.extend(true, targetObj, obj); //會覆寫targetObj里面原來的資料
console.log(targetObj);
//淺拷貝哪一個修改了資料,都會受到影響
targetObj.msg.age = 20;
console.log(obj);
})
圖解:淺拷貝

圖解:深拷貝

PS:圖片參考于pink老師的教程
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/349633.html
標籤:其他
