什么是深拷贝和浅拷贝?以及怎么实现深拷贝和浅拷贝?

news2024/11/13 10:05:41
  • 拷贝浅是创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。
  • 深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    总之:浅拷贝:新旧对象共享同一块内存,深拷贝:新对象跟原对象不共享内存。

浅拷贝实现的方式:

  • Object.assign()
  • 函数库lodash的_.clone方法
  • 展开运算符…
  • Array.prototype.concat()
  • Array.prototype.slice()

深拷贝的实现方式:

  • JSON.parse(JSON.stringify())
  • 函数库lodash的_.cloneDeep方法
  • jQuery.extend()方法 // $.extend(true,{},obj)
  • 手写递归方法,遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel操作-Apache-POI

Excel操作-Apache-POI一、场景需求将一些数据库信息导出为Excel表格将Excel表格数据导入数据库大量的数据的导入导出操作解决方案常用的解决方案:Apache POI与阿里巴巴easyExcelApache-POI介绍Apache-POI是基于office open XML标准(OOXML)和M…

合同审核机器人,提高合同审核效率,规避企业损失

官方网址:www.hanyunintel.com 在合同审核中面临的问题和挑战: 一、人工合同审核风险高: 人工合同审核依赖审核人员业务素养、精神状态、工作量、体力、工作态度及责任心,难免存在人工审核合同不严谨的情况,如果不能及…

【C++提高编程】C++全栈体系(二十一)

C提高编程 第三章 STL - 常用容器 三、deque容器 1. deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言&am…

简洁易用的记账小程序——微点记账

背景 由于每个月的信用卡账单太过吓人,记性也不是特别的好,加上微信支付宝账单中有些明细不是很明确。比如在京东花销的明细不会记录用户购买了什么,只会记录那个通道支出的。所以,才会有了想自己开发一款记账小程序,…

面试常问-Alpha测试和Beta测试

Alpha测试 Alpha测试是一种验收测试,在识别典型用户可能执行的任务并对其进行测试之前,执行该测试是为了识别所有可能的问题和错误。 尽可能简单地说,这种测试之所以被称为alpha,只是因为它是在软件开发的早期、接近开发结束时和…

使用loading动画让你的条件渲染页面更高级

前言在我们做项目的使用常常会使用条件渲染去有选择的给用户展示相关页面,如果渲染的数据或场景比较多比较复杂,那么往往需要3、4s的时间去完成,用户点击了之后就会陷入3、4s的空白期,并且这段时间屏幕是处于一种”未响应“的状态…

【欧拉筛法】洛谷 P3383 线性筛素数

3383. 线性筛素数 文章目录题目描述输入格式:输出格式:数据范围输入样例输出样例方法一:埃氏筛法解题思路代码复杂度分析:方法二:欧拉筛法解题思路代码复杂度分析:两种方法对比埃氏筛法欧拉筛法题目描述 给…

Jetpack管理生命周期——Lifecycle

Android Jetpack 对于任何一个产品来说,我们开发中都会面对哪些问题?如:产品交互、用户体验、代码结构、数据获取、数据存储、网络优化、任务调度等等,虽然在现在的阶段这些问题已经有了很好的解决和优化,也有很多大神…

堆球问题,开普勒猜想(格密码相关)

目录 一. 介绍 二. 历史进展分析 三.2维下的堆球问题 四. 3维下的堆球问题 五. 8维与24维下的堆球问题 总结 一. 介绍 堆球问题又叫堆球理论、最密堆积、球填充,英文为The Theory Of Sphere Packings。 堆球问题的本质就是填充一堆大小相同的球。要求这些球…

FANUC机器人通过KAREL程序实现与PLC位置坐标通信的具体方法示例

FANUC机器人通过KAREL程序实现与PLC位置坐标通信的具体方法示例 在通信IO点位数量足够的情况下,可以使用机器人的IO点传输位置数据,这里以传输机器人的实时位置为例进行说明。 基本流程如下图所示: 基本步骤可参考如下: 首先确认机器人控制柜已经安装了总线通信软件(例如…

CMMI高效实施的5大注意事项

1、明确CMMI实施目标及范围 CMMI在实施过程中,需要根据组织的实际情况,确定CMMI的实施目标和范围,制定实施的计划表,为后续组织过程改进提供明确的方向。 CMMI高效实施注意事项:实施目标及范围的确定​ 2、建立…

虹科新闻 | 虹科与b-plus正式建立合作伙伴关系,共同致力于用于ADAS/AD系统开发的VV测量解决方案

虹科b-plus 携手共创未来! 近期,虹科与德国b-plus正式建立合作伙伴关系。未来,虹科与b-plus将共同致力于提供用于ADAS/AD系统开发的V&V测量解决方案。 合作寄语 虹科CEO陈秋苑女士表示:“虹科非常期待与b-plus合作&#x…

线上研讨会报名 | 与龙智、Perforce共探大规模研发中的数字资产管理与版本控制,赢取千元大奖

2023年2月28日下午2:00,加入全球领先的数字资产管理工具厂商Perforce联合中国授权合作伙伴龙智举办的Perforce on Tour网络研讨会,除了与游戏、芯片、虚拟制作行业专家探讨并分享最佳实践外,还可以赢取惊喜大奖,包括千元华为手环、…

语言文件操作

🌱博客主页:大寄一场. 🌱系列专栏:C语言学习笔记 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 前言 C语言中的文件打开和关闭 文件指针 文件的打开和关闭 fclose 文件的顺序读写 fseek ftell …

Flink-多流转换(Union、Connect、Join)

文章目录多流转换分流基本合流操作联合(Union)连接(Connect)基于时间的合流——双流联结(Join)窗口联结(Window Join)间隔联结(Interval Join)窗口同组联结&a…

【Vue3】组件数据懒加载

组件数据懒加载-基本使用 目标:通过useIntersectionObserver优化新鲜好物和人气推荐模块 电商类网站,尤其是首页,内容有好几屏,而如果一上来就加载所有屏的数据,并渲染所有屏的内容会导致首页加载很慢。 数据懒加载&a…

Java面试题--熔断和降级的区别

熔断和降级都是系统自我保护的一种机制,但二者又有所不同,它们的区别主要体现在以下几点: 概念不同 触发条件不同 归属关系不同 1.概念不同 1.1熔断概念 “熔断”一词早期来自股票市场。熔断(Circuit Breaker)也…

Python3-数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。 Python 数据类型转换可以分为两种: 隐式类型转换 - 自动完成 显式类型转换 - 需要使用类型函数来转换 隐式类型转换 在…

一图说明 monorepo 落地流程方案

关于 monorepo 初次讨论已有2年载,目前团队已经沉淀了成熟的技术方案且经受住了实战考验。所以特梳理相关如下: 也算是关于之前发起的 monorepo–依赖 的解答篇。 上图为目前团队贡献的主流程:① 本地开发 > ② 提交Git仓库 > ③ 触发…