Javascript中的assign()方法到底是浅拷贝还是深拷贝?

2023-11-07

针对于第一级拷贝是深拷贝,对于第二级拷贝是浅拷贝。
看代码:

let A = {
    a: { aa: 10 },
    b: 11,
};

let B = {
    ...A,
    c: 111,
};

console.log(B);  // { a: { aa: 10 }, b: 11, c: 111 }
B.a.aa = '修改1'; 
B.b = '修改2';
console.log(B); //{ a: { aa: '修改1' }, b: '修改2', c: 111 }
console.log(A); //{ a: { aa: '修改1' }, b: 11 }

从上面代码可以看到,
当使用assign方法拷贝了对象A给B后,B对象的a属性是一个Object类型,b属性是一个number类型,分别对a属性和b属性进行了修改,发现A对象的a属性随之也发生了修改,但是b属性没有变化。

所以 使用assign方法拷贝对象时,
如果对象的属性不是引用类型(比如number、string等),那么修改新对象的该属性值,原对象的该属性不会受到影响;
如果对象的属性是引用类型(Object),那么修改新对象的属性值,原对象的该属性也会随之改变。
所以assign的拷贝是浅拷贝。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript中的assign()方法到底是浅拷贝还是深拷贝? 的相关文章

  • MobileSafari 的正确触摸按钮行为

    MobileSafari 通常具有不正确的 HTML 按钮行为 不正确的含义 不像 iOS 原生按钮 正确的按钮行为如下 用户触摸按钮 按钮突出显示 用户将手指拖出按钮 按钮变暗 用户将手指拖回按钮 按钮突出显示 用户将手指拖出按钮并释放
  • 替换文本区域的文字

    我制作了一个 javascript 函数来将文本区域中的某些单词替换为其他单词 但它不起作用 我做了这个 function wordCheck var text document getElementById eC value var ne
  • JavaScript 中的负数到二进制字符串

    任何人都知道为什么javascriptNumber toString https developer mozilla org en US docs JavaScript Reference Global Objects Number toS
  • 如何在react中返回点击元素的属性?

    我想知道是否有一种简单的方法来获取单击元素的属性React js function App return
  • JavaScript 变量带有一个我需要在 Html.ActionLink 中使用的 ID

    我的 jQuery 代码中有一个 JavaScript 变量 其中包含一个我需要在我的Html ActionLink但它不起作用 Html ActionLink Genomf r AnswerForm AnswerNKI new id go
  • Bootstrap 页脚不在底部

    我试图强制我的页脚位于网站底部 我不希望它在滚动时粘住 只是在向下滚动网页时出现在底部 目前 网页显示时页脚位于内容下方 我添加了这样的代码bottom 0 并发现它粘住了并且不适合我的网站 我还添加了这样的代码html body heig
  • 有效 JSON 上的 Firefox JSON“格式不正确”错误

    我在 Firefox 中收到以下错误消息 Error not well formed Source File http school courses booking add php 1287657494723 Line 1 Column 1
  • 如何在 Chrome 中将 Set 转换为数组?

    如何将集合转换为数组 https stackoverflow com questions 20069828 how to convert set to array给出了将 Set 转换为 Array 的三个答案 目前在 Chrome 浏览器
  • Javascript CORS 图像/画布操作

    我正在尝试从另一个已配置为允许 CORS 的域检索图像 并操纵像素 然后我想显示结果并能够操纵结果 我可以在我请求的图像上使用 getImageData 和 toDataURL 所以我知道服务器部分可以工作 但是 当我尝试将图像的 src
  • GraphQL 错误字段类型必须是输入类型,但得到:

    这是突变 const createNotebook mutationWithClientMutationId name CreateNotebook inputFields token type GraphQLString details
  • 在 ReactJS 中更改 URL onClick

    在我的项目中我有一个TabComponent它显示 3 个选项卡 首页 热门 全部 现在 我正在使用context反应维持 activetab它存储当前选项卡 toggleTab改变的方法activetab using setState 选
  • 脚本不会从nodejs应用程序中的ejs文件运行

    我正在尝试使用nodejs express mysql和ejs让网页显示图表 但我显然不明白ejs javascript等是如何工作的 我需要运行一个脚本来设置图表 来自 Chart js 模块 但它不会输出任何类型的图表 我尝试过的 将
  • 如何使用javascript将数据存储在xml文件中?

    我是 javascript 新手 并在我的项目中使用它 因为我需要读取 xml 文件 然后在操作后我想将更新后的值存储回 xml 文件中 我成功从 xml 文件获取值 但无法存储值返回到 xml 文件 这是我尝试过的代码
  • 过滤数据表中的行

    我目前的 JQuery 插件 DataTables 工作正常 并且我在页面顶部插入了一个按钮来进一步过滤列表 我还使用了 DataTables 内置的搜索栏 我希望按钮向下过滤表格 并只显示包含特定值的行 下面是我一直在做的事情 但似乎没有
  • 为什么我的数据没有存储到我的 Firebase 实时数据库中?

    我正在尝试为网络应用程序制作一个注册页面 这会将数据发送到 firebase 数据库 我已阅读官方 firebase 文档并按照说明写入数据 但什么也不会写 在我的数据库控制台中 它显示的所有内容都是空 而不是我的数据 我没有收到控制台错误
  • 多个引导模式的滚动问题

    我有一个带有大量信息的模态页面 因此您需要滚动 该模式包含指向第二个模式的链接 When I 打开模态 1 单击链接打开模式 2 模式 1 保持在后台 然后关闭模式 2 以便我回到模式 1 modal 1 失去滚动 仍然有一个滚动条 但它不
  • 如何使用 JQuery 创建新的 img 标签,并使用 JavaScript 对象中的 src 和 id?

    我从基本意义上了解 JQuery 但对它绝对是新手 并且怀疑这很容易 我在 JSON 响应中获得了图像 src 和 id 转换为对象 因此在 responseObject imgurl 和 responseObject imgid 中获得了
  • 在用户单击之前图像不会绘制在画布上?

    我使用执行类似以下操作的函数绘制几张图像 context drawImage img width 2 1 height 2 1 width height 我读过 我需要等待图像加载后才能绘制它 如下所示 img onload functio
  • 如何使用 jQuery 解析 JavaScript 对象

    jQuery JavaScript 中用于解析 JSON 对象并返回键 值对的 foreach 等效项是什么 JSON 对象 是什么意思 JSON 是一种用于序列化对象的文本格式 如果要循环访问通过反序列化 JSON 字符串获得的对象中的属
  • ASP.NET MVC3 Ajax.ActionLink - 条件确认对话框

    我有一个 Ajax ActionLink 仅当满足某些条件 用户有未保存的更改 时 我才希望显示一个确认对话框 我创建了一个 JavaScript 函数 它根据需要显示确认对话框 并根据响应返回 true 或 false 我将其绑定到 Ac

随机推荐

  • Java框架!mysqlmd5解密

    并发编程三大特性 原子性 一个操作或者多次操作 要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断 要么所有的操作都执行 要么都不执行 对于基本数据类型的访问 读写都是原子性的 long和double可能例外 如果需要更大范围的原
  • CTF从入门到提升(十一)文件包含

    Include stdio h Import request 很多网站的admin 管理员 入口和user 用户 入口是分开的 登陆过程所调用的函数可能都是同一个函数 最后操作的表不同 如果调用的是同一个函数 网站一般分开两个文件存储 ad
  • JetBrains 各 IDE 通用快捷键总结(包括 InteliJ idea,PyCharm,RubyMine,GoLand 等)

    JetBrains 全家桶 IDE 集成开发环境 用起来很方便 而且快捷键都是通用的 至少绝大部分常用的快捷键是通用的 功能十分强大 还可以安装 ideaVim 等各种插件 熟练掌握对提高效率很有帮助 我会把常用的命令用红色粗体标记一下 C
  • STM32中GPIO的8种工作模式!

    一 推挽输出 可以输出高 低电平 连接数字器件 推挽结构一般是指两个三极管分别受两个互补信号的控制 总是在一个三极管导通的时候另一个截止 高低电平由IC的电源决定 推挽电路是两个参数相同的三极管或MOSFET 以推挽方式存在于电路中 各负责
  • T1串口波特率的计算方法

    T1的波特率 2 SMOD指数 32 定时器T1的溢出率 TI溢出率 TI计数率 产生溢出所需的周期数 具体来说 一个机器周期是晶振的频率f除以12 标准模式 每当计数到256 TH1溢出一次 定时器1工作在方式2 8位 使用11 0592
  • 数仓建模分层理论

    分层建设理论 简单点儿 直接ODS DM就可以了 将所有数据同步过来 然后直接开发些应用层的报表 当DM层的内容多了以后 想要重用 就会再拆分一个公共层出来 变成3层架构 这个过程有点类似代码重构 就是在实践中不断的进行抽象 总结 数仓的建
  • 计算工资

    某公司员工的工资计算方法如下 一周内工作时间不超过40小时 按正常工作时间计酬 超出40小时的工作时间部分 按正常工作时间报酬的1 5倍计酬 员工按进公司时间分为新职工和老职工 进公司不少于5年的员工为老职工 5年以下的为新职工 新职工的正
  • Nginx的重写功能——Rewrite

    目录 Nginx常见模块 nginx内置模块 nginx配置文件的常见模块 location模块 常见的正则表达式 location常用的匹配规则 Rewrite模块 Rewrite功能 Rewrite跳转场景 Rewrite跳转实现 语法
  • git:在提交后修改历史提交的作者并同步修改历史commit

    Reset author after author has been changed in the global config 参考 https github com 521xueweihan git tips 同时里面还有其他的git使用
  • 什么是敏捷测试?

    敏捷测试是一种遵循敏捷软件开发规则和原则的测试实践 与瀑布方法不同 敏捷测试可以在项目开始时就开始进行 而开发和测试之间会不断进行集成 敏捷测试方法不是连续的 从某种意义上说 它仅在编码阶段之后执行 而是连续的 敏捷测试计划 敏捷测试计划包
  • Vue+ElementUI+Echarts的地图DOM

    地图图表的开发在我们开发的过程中就很常见 特别是在开发大屏的时候 最近在进行地图图表的开发 就单独用引入的方式来记录一个DOM 让大家一起学习下 示例图 从上图可以看到 这个主要是就是对地图做个一个展示 省份的高亮 各个板块的颜色修改的一些
  • docker安装hbase

    1 下载docker与hbase docker 的下载与安装请参考 https blog csdn net weixin 35757704 article details 114777186 docker pull harisekhon h
  • Vue全局后置守卫

    全局后置守卫 一 在 router 目录下的 index js 文件中配置全局后置守卫 import Vue from vue import VueRouter from vue router Vue use VueRouter impor
  • 如何将时间戳转化为时间格式化字符串

    问题描述 通常服务器返回的时间都不以这种格式出现比如2021 6 1 20 08 30 通常会以Unix时间元年为起点 返回对应的时间戳 15355352553 时间戳 那么我们如何将时间戳转化为时间格式化字符串 首先将时间戳转化为Date
  • matlab时频分析之连续小波变换cwt

    matlab时频分析之连续小波变换cwt 1 小波分析简介 2 小波分析基本原理 3 cwt的matlab实现 4 cwt的边缘效应与影响锥 5 cwt的重构 icwt 6 增加cwt的分辨率的wsst 2020年7月更新 第3节绘制了一个
  • 如何 打造软件系统的亮点

    我们知道 一个软件系统除了能够实现最基本的业务功能之外 通常还会有一些独特的地方 比如说在视觉上给用户带来强烈的震撼效果 或者从业务流程上简化了客户的业务操作 抑或是给客户节省了用户的资源等等 凡是这些能够给客户留下深刻印象 并让客户满意的
  • python小游戏——飞机大战代码开源

    作者 小刘在这里 每天分享云计算网络运维课堂笔记 努力不一定有收获 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的 绽放 愿所有的美好 再疫情结束后如约而至 目录 一 效果呈现 二 主代码 三 cfg 四 README 一 效
  • 2023年第六届先进控制,自动化与机器人国际会议(ICACAR 2023)

    2023年第五届先进控制 自动化与机器人国际会议 ICACAR 2023 重要信息 会议网址 www icacar org 会议时间 2023年4月14 16日 召开地点 中国北京 截稿时间 2023年2月28日 录用通知 投稿后2周内 收
  • m3u8手机批量转码_M3U8批量转换app下载_M3U8批量转换MP4安卓版下载v1.0_智能家应用...

    M3U8批量转换MP4软件 一个简单高效的M3U8转MP4格式软件 支持一键批量转换 在安卓手机上进行操作 传输或者下载的M3U8格式视频文件一般无法打开浏览 直接在这里进行转换 可选择转换后删除源文件 直接获取到可以正常观看的MP4格式文
  • Javascript中的assign()方法到底是浅拷贝还是深拷贝?

    针对于第一级拷贝是深拷贝 对于第二级拷贝是浅拷贝 看代码 let A a aa 10 b 11 let B A c 111 console log B a aa 10 b 11 c 111 B a aa 修改1 B b 修改2 consol