深拷貝和淺拷貝區別是什麼?

2021-10-14 11:02:19 字數 519 閱讀 7244

這個其實是需要我們知道計算機中,資訊的記憶體位址與空間的關係,多的不說,上圖,一看就懂。

clas test
首先我們需要知道1個記憶體位址 = 1個位元組(byte) = 8位(bit),從上面例子來看,int型佔據4個記憶體位址,我們**中建立變數後,計算機會為a和b分配了4個記憶體位址,這一以來,我們只需要知道a和b的記憶體起始位址(首位址),再加4,就是a和b實際在計算機中的位址,如下圖示:

淺拷貝:只是複製了物件的引用位址,兩個物件指向同乙個記憶體位址,所以修改其中任意的值,另乙個值都會隨之變化,這就是淺拷貝

深拷貝:是將物件及值複製過來,兩個物件修改其中任意的值另乙個值不會改變,這就是深拷貝(例:json.parse()和json.stringify(),但是此方法無法複製函式型別)

js中,深拷貝和淺拷貝是什麼?

淺拷貝只是拷貝一層,更深層次物件級別的只拷貝引用.不拷貝位址var obj var o for var k in obj console.log o o.msg.age 20 console.log obj console.log object.assign o,obj 淺拷貝的語法糖 consol...

深拷貝和淺拷貝有什麼區別?

深拷貝和淺拷貝有什麼區別?答 淺拷貝在建立新例項型別時會用到,並保留在新例項中複製的值。淺拷貝用於複製引用指標,就像複製值一樣。這些引用指向原始物件,並且在類的任何成員中所做的更改也將影響它的原始副本。淺拷貝允許更快地執行程式,它取決於所使用的資料的大小。深拷貝用於儲存已複製的值。深層複製不會將引用...

深拷貝和淺拷貝的區別

retain屬性表示兩個物件位址相同 建立乙個指標,指標拷貝 內容當然相同,這個物件的retain值 1也就是說,retain 是指標拷貝 淺拷貝 copy 是內容拷貝 深拷貝 ios中並不是所有的物件都支援copy,mutablecopy,遵守nscopying 協議的類可以傳送copy訊息,遵守...