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