用 structuredClone 替代 JSON.parse(JSON.stringify()) 做深拷贝时,你会遇到哪些坑
处理表单回显、状态快照或者撤销重做时,深拷贝是躲不开的一步。早些年用 JSON.parse(JSON.stringify(obj)) 是最省事的写法,但它会丢掉 Date、RegExp、Map、Set、函数、undefined,遇到循环引用直接抛错,NaN 和 Infinity 还会被改成 null。后来浏览器和 Node.js 陆续提供了 structuredClone,它基于结构化克隆算法,能处理循环引用、Date、Map、Set,甚至 ArrayBuffer 和 File。不过它也不是万能钥匙:函数、DOM 节点、原型链、WeakMap 都不在支持范围内,Symbol 键也会被忽略,某些...