關(guān)于JSON.parse(JSON.stringfy(object))進(jìn)行深拷貝的坑~

JSON.parse(JSON.stringfy(object))就是利用JSON.stringify 將js對象序列化(JSON字符串),再使用JSON.parse來反序列化(還原)js對象;序列化的作用是存儲(對象本身存儲的只是一個(gè)地址映射,如果斷電,對象將不復(fù)存在,因此需將對象的內(nèi)容轉(zhuǎn)換成字符串的形式再保存在磁盤上 )和傳輸。
關(guān)于使用時(shí)需要注意以下幾點(diǎn):
1、如果object里面有時(shí)間對象,則JSON.stringify后再JSON.parse的結(jié)果,時(shí)間將只是字符串的形式。而不是時(shí)間對象;
2、如果object里有RegExp、Error對象,則序列化的結(jié)果將只得到空對象;
3、如果obj里有函數(shù)、undefined、symbol,則序列化的結(jié)果會把函數(shù)或 undefined丟失;
4、如果obj里有NaN、Infinity和-Infinity,則序列化的結(jié)果會變成null
5、JSON.stringify()只能序列化對象的可枚舉的自有屬性,例如 如果obj中的對象是有構(gòu)造函數(shù)生成的, 則使用JSON.parse(JSON.stringify(obj))深拷貝后,會丟棄對象的constructor;
6、如果對象中存在循環(huán)引用的情況也無法正確實(shí)現(xiàn)深拷貝;

綜上所述,如果拷貝的對象不涉及以上情況,可以用這個(gè)方法進(jìn)行深拷貝,但凡涉及到上面的情況,就不能用這個(gè)方法啦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容