更新一種對象深度拷貝的方法

一直在爲之前看到過的對象深度拷貝代碼之複雜而憂桑,我這種腦容量,怎麼取記住嘛!而且方法又都不是常用的,能不能簡單明瞭一點!今天,有人告訴我了一個簡單明瞭的方法,下面演示:

	首先,我來定義一個對象obj1:
	let obj1 = {a: '1', b: '2', c: {d: '1'}}
	然後,就是拷貝了:
	let obj2 = JSON.parse(JSON.stringify(obj1));

就…OK啦!
不信看我的效果圖!

對象深度拷貝
這裏,就拷貝出一個新的對象來啦!
接下來,讓我們來改一改對象看看會不會出什麼幺蛾子!

對象深度拷貝實例
從結果可以看出,改變源對象(obj1),對拷貝出來的對象(obj2)不會有影響
那改變新對象obj2肯定也不會對源對象obj1有影響了
對象深度拷貝實例
由上圖可得出,確實不會。
終於真的有一個如此簡單的方法了,學到了學到了,只是希望我不要把順序記反了的好,畢竟兩個JSON.xxx傻傻分不清楚
下面附完整截圖

對象深度拷貝實例
下面的沒截出來,屏幕不夠長了,不過也不影響,obj1還是最開始直接改變之後那個值。

至於原理,看到代碼大概能解釋一點,JSON.stringfy()方法本來就是將對象轉化成json字符串,字符串肯定會開闢一個新的地址,再把它解析爲JavaScript對象就好了。

好了,see you!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章