JS中深拷贝浅拷贝的区别

news2024/11/21 0:23:21

深浅拷贝在MDN官方中的表述是这样的:
对象的深拷贝是指其属性与其拷贝的源对象的属性不共享相同的引用(指向相同的底层值)的副本。因此,当你更改源或副本时,可以确保不会导致其他对象也发生更改;也就是说,你不会无意中对源或副本造成意料之外的更改。这种行为与浅拷贝的行为形成对比,在浅拷贝中,对源或副本的更改可能也会导致其他对象的更改(因为两个对象共享相同的引用)。
对象的浅拷贝是其属性与拷贝源对象的属性共享相同引用(指向相同的底层值)的副本。因此,当你更改源或副本时,也可能导致其他对象也发生更改——也就是说,你可能会无意中对源或副本造成意料之外的更改。这种行为与深拷贝的行为形成对比,在深拷贝中,源和副本是完全独立的。
简单来说,深拷贝是指将对象的属性和方法都拷贝一份,然后存储到另外一个地址,这样的话,无论你怎么修改原对象,拷贝之后的值都不会改变的
在这里插入图片描述

而浅拷贝是仅拷贝一份原函数的地址,传给调用函数。这样的话,调用的对象还是原对象的地址存放的值,故在修改对象方法或属性时会改变原对象。
在这里插入图片描述

学过C语言的都知道函数当中有两种调用参数方式,分别是传值调用引用调用它和深浅拷贝有异曲同工之妙,其中,传值调用是将原来对象的值传递给新的对象,将值拷贝一份,这样就有两份值,分别指向拷贝前后的对象,无论拷贝之后的值如何修改,都不会改被拷贝对象的值。在此与深拷贝相同。
而引用调用是将原来对象的值不变,将值的地址拷贝一份传给新的对象。这样新的对象也可以调用值,但是如果做出修改,原对象的值也会发生改变。因为两个对象的值存放地址是同一个。
在函数调用中,值调用方式将实参的值传给形参,下面所定义的函数foo为值调用方式,函数g的第一个参数采用值调用,第二个参数采用引用调用方式传递数据。若有表达式y=foo(2),则foo调用执行之后,y被赋值为 7

foo(int x)
int b = x - 1;
g(x,b);
return b + x;
g(int b, int &x)
b = b + 1;
x = 2 * b - x;
return;

因为第二个函数是引用调用,所以返回的值将foo()函数中的值也改变了。

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

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

相关文章

vue下拉框vue字典映射转换失败 字符转数字parseInt :value vue下拉框无法选择 选什么都是最后一个 el-select默认选中 el-select设为只读 input输入框设为只读

现象&#xff1a; 解决后&#xff1a; 关键点&#xff1a; 1、value"0" 与 :value"0" 不同&#xff0c;加冒号:试试 2、:value"parseInt(dict.dictValue)" 字符串转int试试 parseInt() 写死下拉框 <el-form-item label"类型" pro…

COBOL 程序结构

COBOL 程序结构 COBOL程序结构由部&#xff08;division&#xff09;组成&#xff0c;如下图所示&#xff1a; 这些部简介如下&#xff1a; **Sections&#xff08;节&#xff09;**是程序逻辑的逻辑细分。节是段落的集合。**Paragraphs&#xff08;段&#xff09;**是一个节…

路面积水监测-路面积水监测系统

在城市化进程不断加快的背景下&#xff0c;城市道路面临着日益严重的积水问题。持续的降雨和不良的排水系统导致路面积水&#xff0c;给交通运输和城市生活带来了诸多不便和安全隐患。路面积水监测系统旨在易涝点布设内涝积水监测仪&#xff0c;实时了解路面积水情况&#xff0…

矿井水除氟,污水除氟的工艺分析

高矿化度的废水是指含有高浓度溶解性矿物质的废水&#xff0c;通常指的是含有高浓度钠、钙、镁、铁、铝、钾等离子的废水。这些离子通常来自于废水所处的环境、工业或生产过程中使用的原材料和化学品。高矿化度的废水通常具有高盐度、高电导率、高硬度等特征&#xff0c;对环境…

【Nginx】缓存集成

文章目录 缓存的概念Nginx的web缓存服务Nginx缓存设置的相关指令Nginx缓存设置案例Nginx缓存的清除方式一:删除对应的缓存目录方式二:使用第三方扩展模块 Nginx设置资源不缓存 缓存的概念 缓存就是数据交换的缓冲区(称作:Cache),当用户要获取数据的时候&#xff0c;会先从缓存…

DOUBLETROUBLE 1

文章目录 DOUBLETROUBLE: 1实战演练一、前期准备1、相关信息 二、信息收集1、nmap探测目标靶机端口2、扫描目标网址目录3、访问网站&#xff0c;发现secret下有个图片4、将图片下载5、查看图片所含内容6、破解密码并查看7、登陆邮箱8、创建反弹shell9、上传反弹shell10、监听11…

【云计算架构】通过新的优化视角查看云架构

仅仅让云部署工作不再是目标。关注构建和部署最佳解决方案的新指标和方法。 随着云计算架构的成熟&#xff0c;我们定义成功的方式也应该成熟。在2021&#xff0c;我指出&#xff0c;优化云计算更多的是二进制过程&#xff0c;而不是模拟过程。 我当时所说的仍然是正确的&#…

【医学图像】图像分割系列.1

医学图像分割是一个比较有应用意义的方向&#xff0c;本文简单介绍三篇关于医学图像分割的论文&#xff1a; UNeXt&#xff08;MICCAI2022&#xff09;&#xff0c;PHTrans&#xff08;MICCAI2022&#xff09;&#xff0c;DA-Net&#xff08;MICCAI2022&#xff09;。 目录 …

目标追踪---deepsort原理讲解

目录 一、多目标追踪的主要步骤 二、sort流程 三、Deepsort算法流程 一、多目标追踪的主要步骤 获取原始视频帧利用目标检测器对视频帧中的目标进行检测将检测到的目标的框中的特征提取出来&#xff0c;该特征包括表观特征&#xff08;方便特征对比避免ID switch&#xff0…

SQL语句练习附带答案

首先创建数据库filmclub DROP DATABASE IF EXISTS filmclub;CREATE DATABASE filmclub;USE filmclub;CREATE TABLE category (cid INT PRIMARY KEY AUTO_INCREMENT,cname VARCHAR(20) )CHARSETutf8; CREATE TABLE film (fid INT PRIMARY KEY AUTO_INCREMENT,fname VARCHAR(20)…

ChatGPT和 dalle2 配合生成故事绘本

和 dalle2 配合生成故事绘本 在之前章节中&#xff0c;我们已经尝试过让 ChatGPT 来生成一些故事情节&#xff0c;不管是影视剧还是小说还是游戏都可以。这时候&#xff0c;自然而然的可以联想到&#xff1a;那我们可不可以一步到位&#xff0c;把 ChatGPT 编出来的故事情节&a…

为什么MySQL数据库单表建议最大2KW数据?

文章目录 为什么MySQL数据库单表建议最大2KW数据&#xff1f;一、 Innodb 存储引擎1、数据存储2、数据页的结构 二、 B tree 结构三、 B 树存放数据的行数 为什么MySQL数据库单表建议最大2KW数据&#xff1f; 我们经常会听到一种说法&#xff0c;在MySQL中&#xff0c;数据库单…

Spring Security 中的 CSRF 攻击是什么?如何防止它?

Spring Security 中的 CSRF 攻击是什么&#xff1f;如何防止它&#xff1f; 什么是 CSRF 攻击&#xff1f; CSRF&#xff08;Cross-Site Request Forgery&#xff09;攻击是一种常见的网络安全威胁&#xff0c;也称为“跨站请求伪造”攻击。攻击者可以通过某些手段&#xff0…

SpringBoot整合RabbitMQ及其原理分析

上一篇&#xff1a;RabbitMQ基础知识 1、相关依赖 这里无需指定版本号&#xff0c;让其跟着SpringBoot版本走。本示例使用SpringBoot版本号为2.7.10。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-…

SaaS系统平台,如何兼顾客户的个性化需求?

在当今数字化的商业环境中&#xff0c;SaaS系统已经成为企业运营的重要组成部分之一。 SaaS系统平台的好处是显而易见的&#xff0c;可以将业务流程数字化&#xff0c;从而帮助企业提高效率并节省成本。 但是&#xff0c;由于每个企业的业务都不尽相同&#xff0c;所以在选择Sa…

GuLi商城-前端基础ES6

ES6 ES6全称ECMAScript6.0是JavaScript语言的下一代标准。 ECMAScript是浏览器脚本语言的规范&#xff0c;而我们熟悉的各种js语言&#xff0c;如JavaScript则是规范的具体实 现。 新建一个ES6文件夹&#xff0c;shift!按着不动&#xff0c;回车&#xff0c;可以快速生成模…

图神经网络:(处理点云)PPFNet的实现

文章说明&#xff1a; 1)参考资料&#xff1a;PYG官方文档。超链。 2)博主水平不高&#xff0c;如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook和有关文献。超链。提取码8848。 文章目录 前言文献阅读代码实操历史遗留问题 前言 本篇文章接上一篇文章…

【LeetCode: 410. 分割数组的最大值 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

这七种常见的路由协议,每一个网络工程师都应该知道!

你好&#xff0c;这里是网络技术联盟站。 路由协议是网络中非常重要的一个概念&#xff0c;它负责将数据包从源节点传递到目的节点。路由协议定义了网络中不同路由器之间的通信规则和数据传输方式&#xff0c;以便有效地将数据包从源地址传输到目标地址。在网络领域中&#xf…

基于无人机辅助边缘计算系统的节能卸载策略

源自&#xff1a;《系统工程与电子技术》 作者&#xff1a;余雪勇 朱烨 邱礼翔 朱洪波 摘 要 针对复杂地形中地面基础设施无法有效提供可靠通信和密集算力的问题,首先提出一种基于无人机(unmanned aerial vehicle, UAV)托管计算资源的卸载方案。考虑用户终端的计算需…