javascript 對象深淺拷貝的解決方案

問題背景,小程序開發,後臺傳過來大量的json數據,對傳輸過來的值進行處理渲染頁面,返現修改會導致源數據發生改變,

處理思路:將請求的數據進行拷貝一份,頁面渲染等實用拷貝後的數據,在拷貝後的數據上進行格式化等修改,不對源數據進行任何處理

1、淺拷貝:

數據深度只有一層,也只能拷貝一層:例如let obj={name:'zhang san',age:12}屬性值爲字符串、數字、布爾值等;進行拷貝的時候可以選擇淺拷貝:

let _obj = Object.assign({},obj1)

上面是將對象obj1裏面的屬性和屬性值拷貝一份在_obj裏面,另外Object.assign()這個方法也適合用在對象的合併上,用法如下:

let obj1={name:'zhang san',age:16};
	let obj2={mingzi:'li si',nianling:18};
	let numObj = Object.assign({},obj1,obj2);
	console.log(numObj) 

2、深拷貝:

顯示開發環境中很少碰到只有一層的對象,大多數都是層層嵌套的數據,這個時候就不能使用上述淺拷貝的方法了,深拷貝的原始方法暫不做介紹,爲啥?太麻煩,接受愛一種比較簡單的思路:將一個對象轉成json字符串,再將字符串轉回對象。這樣就實現了對象的深拷貝,這個方法簡單高效,實用性好:

let _obj = JSON.parse(JSON.stringify(obj)); 

以後有空再做深度對象拷貝的介紹

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