详解Javascript中的深拷贝和浅拷贝

数据复制是我们编程中经常会使用的技术,对于普通数值数据来说,复制很简单,但是对于复杂类型比如对象的复制,就会有很多需要考虑的东西,比如我们经常说到的深拷贝和浅拷贝。

浅拷贝

复制的对象和原始对象属性相关联。事实上,如果对象的任何字段被其他对象引用,则它们共享相同的内存地址。

深拷贝

与浅拷贝不同,深拷贝复制对象的所有属性,并且为新对象分配新的内存地址,我们对新对象的操作不会影响到原对象,看起来就像是将原对象所有的东西都重新复制出来一份。

数据类型

JavaScript中的数据类型分为原始数据类型和复合数据类型。

数值,字符串,布尔值,undefined,null为原始数据类型,而数组和对象则是复合类型。

原始数据进行复制克隆的时候,永远都是新的副本,不会和原来数据进行关联,而复合数据进行浅拷贝的时候,只是分配值的引用。

创建深拷贝

对于克隆对象,如果我们想要进行深拷贝,那么我们经常使用的方法就是JSON.parse()和JSON.stringify()。

数组Map,ForEach和Slice

对于普通的一维数组,函数Map,ForEach,Slice都提供深拷贝的功能,但是对于嵌套数组,这些函数对于内部数组的处理不提供深拷贝的功能。

总结

Object.assign和Object.create都可以进行对象的复制。

使用assign方法时,我们必须确保对象至少复制第二个参数。通常你只会传递一个空对象作为第一个参数。它不提供类似于扩展运算符的完整拷贝。

使用create方法时,现有对象作为新创建对象的原型创建一个新对象。现有对象作为原型可用,从而使所有属性都可用于新对象。但就复制而言,它提供了部分深复制,如分配和扩展运算符。

在 JavaScript 中复制对象的唯一陷阱是嵌套值。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/204497.html<

(0)
运维的头像运维
上一篇2025-04-07 04:35
下一篇 2025-04-07 04:37

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注