Object.assign()是浅拷贝还是深拷贝?

news/2024/12/27 9:20:40/文章来源:https://www.cnblogs.com/ai888/p/18634607

Object.assign() 在 JavaScript 中是执行浅拷贝(shallow copy)的。这意味着,它只复制对象的顶层属性和值。如果对象的属性值是一个引用类型(例如,数组或另一个对象),Object.assign() 不会复制这个引用类型的实际内容,而是复制这个引用本身。因此,原对象和新对象会共享这个引用,对一个对象的修改会影响到另一个对象。

以下是一个示例,说明 Object.assign() 是浅拷贝:

let obj1 = { a: 1, b: { c: 2 } };
let obj2 = Object.assign({}, obj1);console.log(obj2); // { a: 1, b: { c: 2 } }// 修改 obj1 的顶层属性 a
obj1.a = 2;
console.log(obj1); // { a: 2, b: { c: 2 } }
console.log(obj2); // { a: 1, b: { c: 2 } },obj2 的 a 属性不受影响// 修改 obj1 的引用类型属性 b
obj1.b.c = 3;
console.log(obj1); // { a: 2, b: { c: 3 } }
console.log(obj2); // { a: 1, b: { c: 3 } },obj2 的 b 属性也受到了影响,因为它是浅拷贝

在这个示例中,当我们修改 obj1 的顶层属性 a 时,obj2a 属性不受影响。但是,当我们修改 obj1 的引用类型属性 b 时,obj2b 属性也受到了影响,因为它们共享同一个引用。

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

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

相关文章

Solon v3.0.5 发布!(Spring 生态可以退休了吗?)

新一代,面向全场景的 Java 应用开发框架。从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态。Solon 框架! 新一代,面向全场景的 Java 应用开发框架。从零开始构建(非 java-ee 架构),有灵活的接口规范与开放生态。追求: 更快、更小、更简单 提倡: 克制、高…

面试官:不会“不定高”虚拟列表,你在简历上面提他干嘛?

前言 很多同学将虚拟列表当做亮点写在简历上面,但是却不知道如何手写,那么这个就不是加分项而是减分项了。在上一篇文章欧阳教会你 如何实现一个定高虚拟列表 ,但是实际项目中更多的是不定高虚拟列表,这篇文章欧阳来教你不定高如何实现。PS:建议先看看欧阳的上一篇 如何实…

如何管控经销商:从无序到有序,打造共赢生态!

企业与经销商之间的合作关系可以描述为一种基于共同利益和目标的战略联盟。这种关系旨在通过双方的协同努力,实现产品在市场上的有效推广和销售,从而为企业带来利润增长,同时也为经销商提供商业机会和收益。如何管控经销商,是确保销售渠道顺畅、维护品牌形象和提升销售业绩…

安全无忧,内外网文件交换系统打造企业信息流转新通道!

内外网文件交换系统是指一种能够在组织的内部局域网(Intranet)和外部互联网(Internet)之间实现文件传输和共享的系统,广泛应用于各种需要跨网络传输文件的场景,这些场景主要围绕数据安全、传输效率和业务需求的满足。比如: 1、企业内部数据共享 在企业内部,不同团队或部…

docker启动milvus后连接attu工具

https://help.aliyun.com/zh/milvus/user-guide/attu-user-guide

玩转前端正则表达式

文章首发本人博客,由于格式和图片解析问题,可以前往 阅读原文JavaScript中的正则是Perl的大子集,但Perl内部的一些表达式却没有继承正则表达式是用于匹配字符串中字符组合的模式(可参考MDN教程) 扫码关注公粽号,查看更多优质文章一个例子 使用正则将一个数字以科学计数法进…

重拾 iptables

iptables 是一个常看常忘的命令,本文试图从应用的角度理解它 iptables 是运行在用户空间的应用软件,通过控制 Linux 内核 netfilter 模块,来管理网络数据包的处理和转发 一些常用的场景 1. 禁止 ip 访问后端 IP 在 192.168.64.6 上增加规则: # -A INPUT: 将规则添加到 INPU…

Vue 搭建开发环境

一、下载 js包二、引用js包<!--引用Vue包--><script type="text/javascript" src="../js/vue.js"></script>三、安装Vue Devtools 1、下载链接:链接:https://pan.baidu.com/s/1tKqpbZMRG1iC2PUgjsKOow 提取码:55me 2、Chrome浏览器安装…

《HelloGitHub》第 105 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短…

做销售就一定要像销售吗?

真正厉害的销售,看起来都不像销售。 我知道大家都是为了业绩,但一上来就滔滔不绝地介绍产品,恨不得把产品手册背给客户听,这恰恰是销售中的大忌。 今天就和大家聊聊,如何做一个“不像销售”的销售,这也是我带了6年团队的心得。 一、像朋友不像推销 很多销售见到客户就像打…

.NET 在 Visual Studio 中的高效编程技巧集

前言 本文大姚将为你介绍一些Visual Studio的使用技巧和建议,旨在帮助.NET开发者更加高效地利用Visual Studio进行编程工作。无论你是.NET初学者还是经验丰富的.NET开发者,这些技巧都将有助于提升你的工作效率,让你能够更快地编写出高质量的代码。让我们一起探索这些技巧,让…

读数据保护:工作负载的可恢复性18即时恢复的备份方案

即时恢复的备份方案1. 即时恢复的备份方案 1.1. 即时恢复,就是在文件、文件系统、数据库、虚拟机或应用程序遭到损坏之后,无须经历某种恢复流程就可以将其立刻恢复出来 1.2. 适合用在对RTO要求很严的场合 1.3. 最常见的即时恢复方案就是从快照里面恢复,只需要一条命令即可把…