JavaScript深拷贝核心是创建完全独立的新对象,避免引用共享;常用方法包括JSON.parse(JSON.stringify())(简洁但有类型限制)、structuredClone()(现代标准,支持多类型)、手写递归(可控但复杂)和Lodash的cloneDeep()(全面稳妥)。

JavaScript中深拷贝对象,核心是创建一个与原对象完全独立的新对象,新对象的属性值(包括嵌套对象、数组)都不与原对象共享引用。直接赋值或浅拷贝(如Object.assign()、展开运算符{...obj})只复制第一层,深层仍共用内存地址,修改嵌套内容会影响原对象。
使用 JSON.parse(JSON.stringify()) —— 简单但有局限
这是最常用、写法最简洁的方法,适合纯数据对象(只含字符串、数字、布尔值、null、数组、普通对象):
- ✅ 优点:一行代码搞定,无依赖,兼容性好
- ❌ 缺点明显:
• 会丢失函数、undefined、Symbol、Date、RegExp、Map、Set、BigInt等类型
• 循环引用会直接报错(TypeError: Converting circular structure to JSON)
• Date 变成字符串,正则变成空对象
示例:
标签: 深拷贝 javascript java js json 浏览器 safari red
还木有评论哦,快来抢沙发吧~