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