JavaScript中的对象拷贝

news/2025/2/12 15:12:26/文章来源:https://www.cnblogs.com/ouyangzhiyong/p/18711590

深拷贝 - MDN Web 文档术语表:Web 相关术语的定义 | MDN

浅拷贝 - MDN Web 文档术语表:Web 相关术语的定义 | MDN

深拷贝和浅拷贝

  • 浅拷贝:创建一个新对象,这个对象有着原始对象属性值的副本。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是引用类型,拷贝的就是内存地址,因此新旧对象还是共享同一个引用类型的对象。在 JavaScript 中,标准的内置对象复制操作(展开语法、Array.prototype.concat()Array.prototype.slice()Array.from()Object.assign() 和 Object.create())不创建深拷贝(相反,它们创建浅拷贝)。
  • 深拷贝:创建一个新对象,递归地复制原始对象及其所有嵌套对象的属性值,确保新对象与原始对象完全独立。在JavaScript中,只有能够序列化的对象能够存在一种创建深拷贝的方式。使用 JSON.stringify() 将该对象转换为 JSON 字符串,然后使用 JSON.parse() 将该字符串转换回(全新的)JavaScript 对象

对于一个存储整数的数组,浅拷贝已经足够,因为整数是基本类型,不会出现引用问题。以下是浅拷贝的示例:

const originalArray = [1, 2, 3, 4, 5];const copiedArray = originalArray.slice(); // 浅拷贝copiedArray[0] = 10;console.log(originalArray); // [1, 2, 3, 4, 5]console.log(copiedArray);   // [10, 2, 3, 4, 5]

在这个例子中,originalArray 和 copiedArray 是完全独立的数组,修改 copiedArray 不会影响 originalArray

(function main() {const originalArray = [1, 2, 3, 4, 5];const  copy = originalArray;// 直接引用const copy_by_slice = originalArray.slice(); // 浅拷贝,但是由于是基本类型,所以浅拷贝与深拷贝一致console.log('originalArray',originalArray);copy[0] = 666;console.log('originalArray-new',originalArray);console.log('copy',copy);console.log('copy_by_slice',copy_by_slice);
}());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/882581.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu Linux部署DeepSeek(转载用于学习)

合集 - DeepSeek(4)1.Ubuntu Linux部署DeepSeek02-062.Windows11本地部署DeepSeek加速02-073.DeepSeek部署本地知识库02-084.DeepSeek+Zotero02-11收起 技术背景 DeepSeek是这段时间最热门的话题之一,其蒸馏模型可以实现低成本而高质量的推理,使得我们现在可以在本地小型化的…

deepseek 本地搭建 知识库 使用gpu cpu

下载安装LM Studio官网地址: https://lmstudio.ai/如图,下载完成直接下一步下一步安装即可. 不能飞行上网就用这个网站下载模型 https://hf-mirror.com/Rust编程语言群 1036955113 java新手自学群 626070845 java/springboot/hadoop/JVM 群 4915800 Hadoop/mongodb(搭建/开发…

车辆电子档案系统

在高阶自动驾驶场景和MaaS(Mobility as a Service)业务中,自动驾驶车辆的状态直接关系到整体运营的安全和效率。因此,拥有一套多维度预测、分析车辆指标的电子档案系统显得尤为重要。经纬恒润研发的车辆电子档案是汇总整车各类数据详细信息、对车辆上各项指标进行分析预测及…

九. 计算机网络

计算机网络 一. 硬件设备层级 设备物理层设备 中继器、集线器(是一种多端口的中继器)数据链路层设备 网桥、交换机(是一种多端口的网桥)网络层设备 路由器应用层设备 网关集线器不能自动寻址、集线器可以检测发送冲突。物理层不能隔离广播域和冲突域(也就是所有的端口都是…

2025年,如何选择IT监控平台

在数字化时代,IT系统已经成为企业运营的核心支撑。为了确保IT系统的稳定运行和高效管理,选择一款合适的IT监控平台至关重要。 一、IT监控平台的主要类型 IT监控平台根据其功能和应用场景的不同,可以大致分为以下几类:综合型IT监控平台:这类平台提供了全面的IT监控解决方案…

土木与地质工程监测 振弦式测缝计 桥梁、隧道、边坡位移实时监控,定制化组网与无线传输支持

土木与地质工程监测 振弦式测缝计 桥梁、隧道、边坡位移实时监控,定制化组网与无线传输支持基于霍尔效应原理研发的高精度绝对角度传感器,采用创新性数字信号处理技术实现角度测量。核心系统集成高精度16位模数转换器,配合五阶数字滤波算法,有效保障测量数据稳定性。通过温…

vue3 + vite + element-plus + springboot打包上线所遇之坑

自我本经介绍:我自己是做Java开发的,对于前端其实并不熟悉,以下的前端技术都是为了做这个项目现学现卖的。 自己使用vue3 + vite + element-plus从头到尾打了个管理后台,在开发环境运行一切正常,于是准备打包发布到服务器上,就有了几天痛苦的解决问题的过程打包npm run b…

省选前想题记录

想题记录 wtcqwq 2.3~2.6 Todo List 除了省选计划题单、模拟赛补题和刷 AGC 以外。LGV 引理和线性代数; USACO Jan 的 G 和 P 组想一想学一学做一做。随记 2.4。只有刺痛自己的时候才能认知自我啊... 2.4。好冷。机房里已经空无一人了。真希望确实是 “高处不胜寒” 啊。 2.5。…

在KEIL中使用JLINK仿真HC32F448时不能识别芯片

1.HC32F448在MDK中使用JLINK仿真找到不芯片2.确定后手动选择芯片 如下图,选择Cortex-M4就可以了。

基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。

这是一座专属你的知识宝库,它依托 DeepSeek R1 满血版大模型构建而成。在这里,每一次回答都源自对你专属文件的深度学习,精准匹配你的知识需求,为你输出最贴合文件内容的答案 。 使用 Cherry Studio 结合硅基流动(SiliconCloud)来创建基于 DeepSeek R1 的个人知识库,按照…

十分钟满血deepseek R1 api部署

目前deepseek app访问速度较慢,经常出现访问超时的问题。而使用api部署的方式即可使用满血专属deepseek R1模型,pc端/手机端均可使用 简要流程:注册硅基流动账号,生成账号密钥下载chat bot,配置chat bot进行对话注册硅基流动账号 硅基流动网址如下: https://cloud.silico…

2024问题总结

20241225 XlVirtualList解决数据量大,滚动后,再点下拉会出现空白 setTimeout(() => {document.querySelector(.vxe-table--body).style.marginTop = 0})20241224双向数据绑定问题加key 是否已有这个元素 $set 慢半拍加$nextTick:key="isPlan?scope.row.dblamount:null…