請簡述深拷貝與淺拷貝的區别?創建一個新對象,然後将當前對象的非靜态字段複制到該新對象,如果字段是值類型的,那麼對該字段執行複制;如果該字段是引用類型的話,則複制引用但不複制引用的對象因此,原始對象及其副本引用同一個對象簡而言之,淺拷貝僅僅複制所考慮的對象,而不複制它所引用的對象,今天小編就來說說關于請簡述深拷貝與淺拷貝的區别?下面更多詳細答案一起來看看吧!
請簡述深拷貝與淺拷貝的區别
1.淺拷貝的定義創建一個新對象,然後将當前對象的非靜态字段複制到該新對象,如果字段是值類型的,那麼對該字段執行複制;如果該字段是引用類型的話,則複制引用但不複制引用的對象。因此,原始對象及其副本引用同一個對象簡而言之,淺拷貝僅僅複制所考慮的對象,而不複制它所引用的對象
2.深拷貝的定義深拷貝是一個整個獨立的對象拷貝,深拷貝會拷貝所有的屬性,并拷貝屬性指向的動态分配的内存。當對象和它所引用的對象一起拷貝時即發生深拷貝。深拷貝相比于淺拷貝速度較慢并且花銷較大。創建一個新對象,然後将當前對象的非靜态字段複制到該新對象,無論該字段是值類型的還是引用類型,都複制獨立的一份。當你修改其中一個對象的任何内容時,都不會影響另一個對象的内容。簡而言之,深拷貝把要複制的對象所引用的對象都複制了一遍。
淺拷貝隻是複制了對象的引用地址,兩個對象指向同一個内存地址,所以修改其中任意的值,另一個值都會随之變化,這就是淺拷貝(例:assign())
深拷貝是将對象及值複制過來,兩個對象修改其中任意的值另一個值不會改變,這就是深拷貝(例:JSON.parse()和JSON.stringify(),但是此方法無法複制函數類型)
,