問題背景,小程序開發,後臺傳過來大量的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));
以後有空再做深度對象拷貝的介紹