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