關於深拷貝和淺拷貝的理解

2021-10-08 03:21:20 字數 520 閱讀 2663

淺拷貝只拷貝物件的一層,深拷貝是拷貝多層;

舉例說明

let a=[1,2,3,[4,5,6],7];

如果實現陣列的第一層改變 而第二層改變不了屬於淺拷貝,如果都可以改變的話屬於深拷貝;

實現淺拷貝的方法: object.assign()、slice()、cancat()都是只能拷貝一層

實現深拷貝的方法:json.parse(json.stringfy(obj))有自己的侷限性,正則物件無法使用這種方式實現深拷貝

function deepclone(obj) ;

for(let key in obj)

if (obj[key] && obj[key] === 'object')else

} return result; }}

通過jquery的extend方法實現深拷貝

var array = [1,2,3,4];

var newarray = $.extend(true,,array);

關於深拷貝和淺拷貝的理解

淺拷貝 只拷貝指標,相當於引用計數 1 不可變陣列 深拷貝 連同屬性拷貝出乙個新的物件。自定義物件如果想要拷貝需要遵循nscopy協議。沒實現的話使用copy會直接崩潰 1.不可變陣列用copy修飾的原因 nsstring使用copy修飾同理 方式傳入的是乙個可變陣列。如果使用strong修飾,萬一...

理解「淺拷貝」和「深拷貝」

淺拷貝 將原物件 原陣列 的 引用 直接賦給新物件 新陣列 新物件 新陣列 是原物件 原陣列 的乙個引用。如果改變這個新物件 新陣列 原物件 原陣列 就會改變。深拷貝 將原物件的各項屬性的 值 陣列的所有元素 都拷貝給新物件 新陣列 是拷貝的 值 而不是 引用 為什麼要使用深拷貝?希望改變新物件 新...

關於深拷貝和淺拷貝

以nsstring與nsmutablestring舉例 nsstring str1 xfj nsmutablestring str2 str1 mutablecopy nslog str1,str2 nslog p p str1,str2 輸出結果 xfj xfj123 0x102701068 0x...