2025-07-14 · JavaScript
structuredClone 与 JSON 深拷贝的差异
为什么你写的深拷贝会悄悄丢失 Date、Map 和循环引用。
前言
JSON.parse(JSON.stringify(x)) 是大多数人第一天就会写的深拷贝。本文比较两者的行为差异,说明 structuredClone 能处理哪些情况,以及什么时候该换一种做法。
常见的翻车姿势
跳过这一步的团队,通常会踩中三种坑:
- 优化了一个没人同意要动的数字。
- 照抄了约束完全不同的项目的方案。
- 一直推迟决策,直到反悔的代价高得吓人。
建议的切入方式
- 用用户的语言,一句话讲清楚问题。
- 选择一个每周都能度量的信号,而不是只在上线当天看一眼。
- 给小实验设定时间盒;两天的 spike 胜过两周的辩论。
小结
如果 JavaScript 教会了我们什么,那就是「无聊的一致性」打赢「聪明的一次性方案」。把学到的东西带回团队,别让它变成口口相传的都市传说。