拷貝機(jī)原理 編程里面的深拷貝和淺拷貝各是什么意思,怎么理解這兩個(gè)?
編程里面的深拷貝和淺拷貝各是什么意思,怎么理解這兩個(gè)?淺拷貝意味著源對象和拷貝對象共享同一個(gè)實(shí)體,只是引用的變量不同(名稱不同)。對其中一個(gè)對象的更改會影響另一個(gè)對象。例如,一個(gè)人的名字起初是張三,后
編程里面的深拷貝和淺拷貝各是什么意思,怎么理解這兩個(gè)?
淺拷貝意味著源對象和拷貝對象共享同一個(gè)實(shí)體,只是引用的變量不同(名稱不同)。對其中一個(gè)對象的更改會影響另一個(gè)對象。例如,一個(gè)人的名字起初是張三,后來改成了李四,但卻是同一個(gè)人。無論是張三缺胳膊缺腿,還是李四缺胳膊缺腿,都是同一個(gè)人的厄運(yùn)。深度復(fù)制是指源對象和復(fù)制對象相互獨(dú)立,任何對象的改變都不會影響到另一個(gè)對象。例如,一個(gè)叫張三的人被用來克隆另一個(gè)叫李四的人。不管張三缺胳膊缺腿,李四缺胳膊缺腿,都不會影響別人。典型的是值對象,例如預(yù)定義的類型int32、double、struct、enum等。
javascript對淺拷貝和深拷貝的詳解?
Shallow copy只復(fù)制引用,數(shù)據(jù)仍然是內(nèi)存中的一個(gè)。如果引用對象發(fā)生更改,變量也將同步更改。深度復(fù)制相當(dāng)于復(fù)制內(nèi)存中的數(shù)據(jù),修改變量不會影響原始變量,同樣,修改原始變量也不會影響當(dāng)前變量。淺拷貝:深拷貝(最簡單的方法,拷貝性能也不弱)