一、什么是浅拷贝Shallow Copy浅拷贝只复制对象的第一层嵌套对象仍然共享引用。示例const obj { name: Tom, address: { city: Beijing } } const copy { ...obj } copy.address.city Shanghai console.log(obj.address.city) // Shanghai原因obj ├ name └ address → 指向同一个内存浅拷贝只复制obj.address 的引用二、什么是深拷贝Deep Copy深拷贝递归复制对象所有层级生成完全独立的新对象。示例const obj { name: Tom, address: { city: Beijing } } const copy deepClone(obj) copy.address.city Shanghai console.log(obj.address.city) // Beijing结构obj.address ! copy.address三、浅拷贝常见实现方式1 Object.assignconst copy Object.assign({}, obj)2 展开运算符const copy { ...obj }3 数组浅拷贝const arr [1,2,3] const copy1 arr.slice() const copy2 arr.concat() const copy3 [...arr]四、深拷贝常见方法方法1 JSON序列化最常见const copy JSON.parse(JSON.stringify(obj))优点简单缺点不能拷贝function undefined Symbol Date RegExp 循环引用示例const obj { fn: () {} } JSON.parse(JSON.stringify(obj)) // fn丢失方法2 structuredClone现代方法 ⭐推荐浏览器原生 APIconst copy structuredClone(obj)优点支持 Map Set Date ArrayBuffer缺点旧浏览器不支持方法3 lodash使用Lodashimport _ from lodash const copy _.cloneDeep(obj)优点稳定 支持复杂对象方法4 手写深拷贝面试最爱function deepClone(obj) { if (obj null || typeof obj ! object) { return obj } const copy Array.isArray(obj) ? [] : {} for (let key in obj) { if (obj.hasOwnProperty(key)) { copy[key] deepClone(obj[key]) } } return copy }五、解决循环引用高级面试如果对象这样const obj {} obj.self obj普通递归会无限递归解决使用WeakMapfunction deepClone(obj, hash new WeakMap()) { if (obj null || typeof obj ! object) { return obj } if (hash.has(obj)) { return hash.get(obj) } const clone Array.isArray(obj) ? [] : {} hash.set(obj, clone) for (let key in obj) { clone[key] deepClone(obj[key], hash) } return clone }六、浅拷贝 vs 深拷贝总结对比浅拷贝深拷贝拷贝层级第一层所有层引用对象共享独立性能快慢实现简单复杂七、真实开发怎么选一般浅拷贝 90% 深拷贝 10%原因React / Vue 都鼓励不可变数据更新例如setState({ ...state, user: { ...state.user, name: Tom } })八、面试标准回答背这个可以这样回答浅拷贝只复制对象的第一层属性如果属性值是引用类型则复制的是引用地址因此修改嵌套对象会影响原对象。深拷贝会递归复制对象的所有层级生成一个完全独立的新对象。常见浅拷贝方式有 Object.assign 和展开运算符。深拷贝可以使用 JSON.parse(JSON.stringify)、structuredClone、lodash 的 cloneDeep或者手写递归实现并通过 WeakMap 解决循环引用问题。如果你准备前端面试我可以再给你整理一套JS 高频 100 题大厂版比如防抖和节流call apply bindPromise.allEvent Loop原型链手写 new手写 Promise手写深拷贝终极版基本是字节 / 腾讯 / 阿里 高频题。