原文:淺拷貝與深拷貝的實現方案與應用場景

寫在前面 首先我們得清楚基本概念。拷貝 Copy 即復制。 淺拷貝:創建一個新對象,保存原始對象屬性值精准拷貝。如果屬性是基本類型,拷貝的是基本類型的值,如果屬性是引用類型,拷貝的是內存地址,並不會占用新的內存,這種情況下如果其中一個對象改變了這個地址,會影響到另一個對象。淺拷貝只復制指向某個對象的指針,而不復制對象本身。新舊對象共享同一塊內存。 深拷貝:將一個對象從內存中完整的拷貝一份出來,從堆 ...

2020-12-06 11:38 0 1022 推薦指數:

查看詳情

深拷貝淺拷貝應用場景

淺拷貝,都是拷貝對象內的數據到新對象,新舊對象內的數據相同。 1.淺拷貝拷貝對象的第一層屬性,如果對象中還有對象,只是拷貝的內存地址(引用),兩者修改會相互影響。用於對象中都是基本數據類型的情況。 2.深拷貝 拷貝對象的多層屬性,如果對象中還有對象,會繼續拷貝,使用遞歸實現。 3. ...

Fri Nov 13 17:37:00 CST 2020 0 956
什么是深拷貝淺拷貝以及如何實現深拷貝

什么是淺拷貝淺拷貝是指copy的對象和被copy的對象它們公用一個實體,也就是同時指向內存中的一個相同的地址。比如,有的地方把太陽叫“太陽”,而有的地方把太陽叫做“日頭”,不管是“太陽”還是“日頭”,指的都是太陽這個物體,如果某天“太陽”缺了一塊兒(只說如果),那么“日頭”也肯定會缺一 ...

Wed Dec 14 22:11:00 CST 2016 0 1579
什么是深拷貝?什么是淺拷貝?如何實現深拷貝

深拷貝淺拷貝是針對引用類型的 淺拷貝: 簡單來說就是一個對象B復制另一個對象A,當改變B對象的值是A對象的值也隨之改變。 舉個例子 可以看到兩個對象的值都被修改了。 淺拷貝:就是拷貝對象的引用,而不深層次的拷貝對象的值,多個對象指向堆內存中的同一 ...

Mon Sep 07 19:52:00 CST 2020 0 802
JavaScript深拷貝—我遇到的應用場景

簡述 深拷貝拷貝實例,其作用是為了不影響拷貝后的數組對起原數組造成影響。這時我們就需要進行深拷貝。(JavaScript的繼承) 我遇到的應用場景 我是在用vue的element-ui做項目的時候遇到的,這是一個播放和暫停的按鈕切換功能 代碼: 圖標就是代碼中的a標簽 ...

Mon Sep 10 02:45:00 CST 2018 0 1331
什么是淺拷貝?如何實現淺拷貝?什么是深拷貝?如何實現深拷貝

在上面,我們了解了對象類型在賦值的過程中其實是復制了地址,從而會導致改變了一方其他也都被改變的情況。通常在開發中我們不希望出現這樣的問題,我們可以使用淺拷貝來解決這個情況。 淺拷貝 首先可以通過Object.assign來解決這個問題,很多人認為這個函數是用來深拷貝的。其實並不是 ...

Wed Oct 16 17:53:00 CST 2019 0 561
淺拷貝深拷貝

問題緣起 如果給一個變量賦值一個對象,那么新變量和原對象變量將會是同一個引用,其中一方改變,另一方也會改變。 該問題可以用淺拷貝來解決。但是淺拷貝只能解決對象的第一層的引用問題(或數組的第一維),如果接下去的屬性還是對象的話那么還是同一個引用。這就需要引入深拷貝。 對象的深淺拷貝 1. ...

Tue Aug 21 19:34:00 CST 2018 0 822
深拷貝淺拷貝

淺拷貝:實際上只是對最外層對象進行了拷貝,而對內層對象則不進行拷貝,只增加了外層對象一份內存。 深拷貝:對內層對象進行遞歸拷貝,增加了所有的內層對象占用的內存。 對不可變類型(如元組)的特殊處理具體表現為如果元組的元素是集合類型,則deepcopy依然進行遞歸拷貝,而copy不進行任何處理 ...

Sat Oct 13 07:11:00 CST 2018 0 704
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM