浅拷贝只复制第一层属性,新旧对象共享嵌套引用;深拷贝递归复制所有层级,完全独立。常用浅拷贝有展开运算符、Object.assign()、slice()/concat();深拷贝推荐structuredClone,其次JSON法,特殊需求可手写递归函数。
JavaScript中浅拷贝只复制对象的第一层属性,新旧对象共享嵌套的引用;深拷贝则递归复制所有层级,新对象与原对象完全独立。
适用于只有一层结构的对
象或数组,修改嵌套内容会影响原对象。
const newObj = {...oldObj} 或 const newArr = [...oldArr]
const newObj = Object.assign({}, oldObj)
arr.slice()
需要完整隔离嵌套结构时使用,注意性能和特殊值限制。
多数场景下优先用 structuredClone(如有兼容性要求再降级);若只操作简单数据且需兼容老环境,JSON 方法够用;频繁操作或有特殊需求(如过滤字段、处理 BigInt),建议封装自定义深拷贝函数。
基本上就这些,不复杂但容易忽略嵌套影响和边界情况。