深拷貝 淺拷貝

2021-09-12 06:50:33 字數 799 閱讀 7422

淺轉殖(shallow copy):新舊物件共享乙個位址,改變乙個,另乙個也會改變(淺拷貝只能拷貝值型別的資料,對於引用型別,只會拷貝引用位址,如果有引用型別,多個拷貝物件會共用同乙個引用型別的資料,造成混亂。)

深轉殖(deep copy):新舊物件不共享乙個位址。

一、陣列

1 .concat

2 .slice(0)

3.陣列擴充套件 let […arr1] = arr2

4.一一遍歷賦值

function deep(arr1)

return arr;

}

二、物件

1.物件擴充套件 let = arr2

2.一一遍歷賦值

function deep(obj) ;

for (let key in obj) ;

return obj1;

}

三、陣列、物件通用

1.json.parse(json.stringify(arr))

2.一一遍歷

function deepcopy(v) ;

for (let i in v)

return o;

}

四、注意

object.assign({},arr1,arr2) object.assign 它只對頂層屬性做了賦值,完全沒有繼續做遞迴之類的把所有下一層的屬性做深拷貝。

object.assign(arr1,arr2) // 淺拷貝。

3.8 女神節記~

淺拷貝 深拷貝

copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...

深拷貝 淺拷貝

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝 深拷貝

retain是建立乙個指標,引用物件計數加1。copy屬性表示兩個物件內容相同,新的物件retain為1 與舊有物件的引用計數無關,舊有物件沒有變化。copy減少物件對上下文的依賴。retain屬性表示兩個物件位址相同 建立乙個指標,指標拷貝 內容當然相同,這個物件的retain值 1也就是說,re...