一行代碼實(shí)現(xiàn)深拷貝?別再用 JSON.stringify 了!
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
在JavaScript開(kāi)發(fā)中,對(duì)象的深拷貝是一個(gè)常見(jiàn)需求。很多開(kāi)發(fā)者習(xí)慣使用 JSON.stringify 的致命缺陷
1. 無(wú)法處理循環(huán)引用
一旦對(duì)象中存在循環(huán)引用,這種方法就會(huì)直接拋出錯(cuò)誤,導(dǎo)致程序崩潰。 2. 丟失特殊數(shù)據(jù)類型JSON序列化無(wú)法處理函數(shù)、Symbol、undefined,會(huì)將Date轉(zhuǎn)為字符串,RegExp變?yōu)榭諏?duì)象,NaN和Infinity變?yōu)閚ull。 3. 原型鏈丟失深拷貝后的對(duì)象變成了普通對(duì)象,失去了原型鏈上的所有方法和屬性。 4. Map、Set、WeakMap、WeakSet 的處理這些集合類型在JSON序列化過(guò)程中都變成了空對(duì)象,數(shù)據(jù)完全丟失。 更可靠的深拷貝替代方案既然JSON方法這么多坑,那么有哪些更好的替代方案呢?現(xiàn)代瀏覽器提供了原生的結(jié)構(gòu)化克隆API
優(yōu)點(diǎn):
缺點(diǎn):
盡管 該文章在 2025/4/21 10:03:30 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |