Skip to content
Go back

JavaScript对象拷贝详解:浅拷贝 vs 深拷贝🌊🆚🌊🌊

Published:  at  12:00 AM

JavaScript对象拷贝详解:浅拷贝 vs 深拷贝🌊🆚🌊🌊

在日常开发中,我们经常会遇到需要“复制对象”的场景。你是否也遇到过:明明用了扩展运算符(…)或Object.assign进行对象复制,结果修改副本却影响了原对象?这就是“浅拷贝”与“深拷贝”的经典问题!本文结合实际代码案例,带你系统梳理相关技术细节。

1. 浅拷贝(Shallow Copy)原理与实现🌊

什么是浅拷贝?

浅拷贝会复制对象的第一层属性。如果某个属性的值本身是一个对象(如嵌套对象),那么只会复制该对象的引用,而不会递归复制内部的结构。这导致副本和原对象的嵌套属性依然共享同一份数据。

常用实现方式

最常用的浅拷贝方法有:

代码示例

const originalConfig = {
  app: "sevalla-web",
  region: "us-east-1",
  resources: {
    cpu: "2vCPU",
    memory: "4GB",
  },
};

// 使用扩展运算符进行浅拷贝
const shallowCopy = { ...originalConfig };

// 修改嵌套对象
shallowCopy.resources.cpu = "4vCPU";

console.log(originalConfig.resources.cpu); // 输出:"4vCPU"

技术解析

适用场景


2. 深拷贝(Deep Copy)原理与实现🌊🌊

什么是深拷贝?

深拷贝会递归复制对象的所有层级属性,无论属性值是基本类型还是引用类型。这样,副本和原对象之间不会有任何共享的子对象,彼此完全独立。

常用实现方式

代码示例

const deepConfig = JSON.parse(JSON.stringify(originalConfig));

// 修改嵌套对象
deepConfig.resources.cpu = "8vCPU";

console.log(originalConfig.resources.cpu); // 输出:"4vCPU"
console.log(deepConfig.resources.cpu); // 输出:"8vCPU"

技术解析

适用场景


3. 总结与最佳实践💡

浅拷贝适合什么场景?

深拷贝适合什么场景?

技术选型建议


4. 小结🔖

理解浅拷贝与深拷贝,是写好JavaScript高质量代码的重要基础。遇到复杂数据结构时,千万要警惕“引用共用”带来的隐患。希望本文结合实例分析,能让你一眼看懂二者区别,并在实际开发中灵活选用,写出健壮可靠的业务代码!


让我们一起避开JS开发中的“引用陷阱”,高效进阶吧!🚀



Previous Post
🔒HTTPS原理全解析:从握手到数据加密的技术细节
Next Post
C# 14 新特性:field 关键字深度解析与实用场景