js深拷貝的三種實現方式 淺拷貝與深拷貝的區(qū)別是什么?
淺拷貝與深拷貝的區(qū)別是什么?1. 深拷貝和淺拷貝都是源對象的拷貝,占用不同的內存空間。2. 不可變類型的對象對深副本和淺副本沒有影響,并且最終地址值和值是相等的。3. 變量類型:=淺復制:等值,等地址
淺拷貝與深拷貝的區(qū)別是什么?
1. 深拷貝和淺拷貝都是源對象的拷貝,占用不同的內存空間。
2. 不可變類型的對象對深副本和淺副本沒有影響,并且最終地址值和值是相等的。
3. 變量類型:
=淺復制:等值,等地址
復制淺復制:等值,不等地址
深度復制:等值,不等地址
淺復制只復制引用,數據仍然是內存中的一個。如果引用對象發(fā)生更改,深度復制相當于將數據復制到內存中。此時,修改變量不會影響原始變量。同樣,修改原來的變量也不會影響當前的變量
一般來說,深拷貝和淺拷貝的區(qū)別主要在于指針(或指針)。淺層復制只是將源對象的指針(它指的是通用對象,而不僅僅是類的實例)分配給目標對象。目標指針的操作是源對象的操作,因此在許多情況下,目標對象被銷毀(或跳出),然后源對象的相關部分也被銷毀。深度復制是為目標對象重新分配空間,它可以從源對象的操作中分離出來。