iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0

前面有提到淺拷貝,這個是處理對象為非基礎型別( Primitive type )時,,如陣列、物件等,會遇到的問題,因為基礎型別( Primitive type )是把複製的值存放在不同的記憶體位置,而非基礎型別( Primitive type )則是分享同一個記憶體。

淺拷貝只能做到淺層的複製,無法打到完全的複製,還是會受到原來的對象(被拷貝的)所影響

深拷貝就是完全複製一模一樣的對象,而兩個對象是獨立的,不共用記憶體,就算改變其中一個,另一個也不會受到影響

淺拷貝有幾種方式,展開運算子(spread)、陣列方法concat( )、slice( )、Array.from( )和Object.assign( ),底下用展開運算子(spread)當作例子示範一下 :
https://ithelp.ithome.com.tw/upload/images/20241001/201686615n646VXrnb.jpg
可以看到物件第一層(a)沒被影響,但第二層(b)被影響
https://ithelp.ithome.com.tw/upload/images/20241001/20168661gm6IFsYvI1.jpg
在處理一些資料用淺拷貝比較麻煩,接著介紹深拷貝,深拷貝有幾種方法,JSON.stringify/parse、Lodash 套件中的深拷貝方法 cloneDeep( ),JSON.stringify/parse就是JSON.stringify把物件轉成字串、JSON.parse再把字串轉成物件。


上一篇
第二十一天 - - JavaScript spread rest destroying
下一篇
第二十三天 - - JavaScript JSON(JavaScript Object Notation)
系列文
跟著鱷魚妹妹一起坐牢之JavaScript 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言