json.stringify()是目前前端開發過程中最常用的深拷貝方式,
原理是把有個物件序列化成為乙個 json 字串,將物件的內容轉換成字串的形式再儲存到磁碟上,
再用json.parse()反序列化將 json 字串變成乙個新的物件
1 let obj1 =;通過 json.stringify 實現深拷貝有幾點要注意拷貝的物件的值中如果有函式,undefined,symbol 則經過 json.stringify()序列化後的 json 字串中這個鍵值對會消失56 let str =json.stringify(obj1);
7 let obj2 =json.parse(str);
8 console.log(obj2); //910
//修改obj1
11 obj1.a = 2;
12 obj1.b.push(4);
13 console.log(obj1); //
14 console.log(obj2); //
無法拷貝不可列舉的屬性,無法拷貝物件的原型鏈
拷貝 date 引用型別會變成字串
拷貝 regexp 引用型別會變成空物件
物件中含有 nan、infinity 和-infinity,則序列化的結果會變成 null
無法拷貝物件的迴圈應用(即 obj[key] = obj)
學習記錄
js物件深拷貝
由於引用型別 陣列 物件 是按位址傳遞,直接拷貝是淺拷貝,即修改拷貝後的變數,原變數也會改變。有時需要深拷貝乙個物件,這時就需要遍歷徹底複製,使原物件和拷貝物件完全脫離關係。function deepcloneobj obj for i in obj return o 實現細節 假定傳入的是乙個引用...
js 物件深拷貝 深拷貝與淺拷貝
前言 最近在複習一些面試的知識點,剛剛好複習到了這一部分,於是就寫下這篇文章記錄一下。一 值型別和引用型別 在學習深拷貝和淺拷貝之前,我們先來了解一下js的變數型別。值型別 vs 引用型別 值型別 值型別主要有 number,string,boolean,symbol,null,undefined ...
js 深拷貝方法
object 方法 object.assign target,source 將源拷貝到目標,切返回目標 es6 擴充套件運算子 陣列方法 slice concat,es6擴充套件運算子 複製 json序列化 let obj let str json.strify obj json.parse str...