es6扩展运算符 (...)

2023-11-06

es6的扩展运算符就是取出参数对象中的所有可遍历属性,拷贝到当前对象之中

let bar = { a: 1, b: 2 };
let baz = { ...bar }; // { a: 1, b: 2 }

实际上是通过Object.assign方法实现的。

let baz = Object.assign({}, bar); // { a: 1, b: 2 }

/*将源对象(source)的所有可枚举属性,复制到目标对象(target)*/

如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性

let bar = {a: 1, b: 2};
let baz = {...bar, ...{a:2, b: 4}};  // {a: 2, b: 4}

应用:在redux中的reducer函数规定必须是一个纯函数,reducer中的state对象要求不能直接修改,可以通过扩展运算符把修改路径的对象都复制一遍,然后产生一个新的对象返回。

扩展运算符对对象实例的拷贝属于一种浅拷贝。

let obj1 = { a: 1, b: 2};
let obj2 = { ...obj1, b: '2-edited'};
console.log(obj1); // {a: 1, b: 2}
console.log(obj2); //  {a: 1, b: "2-edited"}

上面这个例子扩展运算符拷贝的对象是基础数据类型,因此对obj2的修改并不会影响obj1。

let obj1 = { a: 1, b: 2, c: {nickName: 'd'}};
let obj2 = { ...obj1};
obj2.c.nickName = 'd-edited';
console.log(obj1); // {a: 1, b: 2, c: {nickName: 'd-edited'}}
console.log(obj2); // {a: 1, b: 2, c: {nickName: 'd-edited'}}

引用数据类型。

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

es6扩展运算符 (...) 的相关文章

  • 【QT】判断本地语言

    QLocale ql switch ql language case QLocale Chinese 系统语言是中文 可以进行其他操作 break default break
  • 模块之间的耦合与内聚的七种类型

    文章目录 前言 按功能划分的四种模块类型 七种耦合 1 非直接耦合 2 数据耦合 3 标记耦合 4 控制耦合 5 外部耦合 6 公共耦合 7 内容耦合 七种内聚 1 偶然 巧合 内聚 2 逻辑内聚 3 时间内聚 4 通信内聚 5 顺序内聚
  • 常用 Git 命令清单

    常用 Git 命令清单 文章目录 常用 Git 命令清单 在当前目录新建一个Git代码库 新建一个目录 将其初始化为Git代码库 下载一个项目和它的整个代码历史 显示当前的Git配置 编辑Git配置文件 设置提交代码时的用户信息 添加指定文
  • 编码规范C/C++

    一 命名 1 类型名 使用首字母大写的驼峰命名法 如StudentGrade MyClass 命名由单词组合而成 其中每个单词以大写字母开头 不包含下划线 宏 常量 enum 结构中的成员命名全部大写 2 变量 语义上应该是一个名词或名词短
  • 大学计算机基础字母缩写大全,大学计算机基础缩写词.pdf

    大学计算机基础缩写词 1 ALU Arithmetic Logic Unit 算术逻辑单元 2 CPU Central Processing Unit 中央处理单元 3 CISC 技术 ComplexInstructionSetComput
  • windows10右下角网络图标不见,而且设置里面是灰色的

    打开任务管理器 把资源管理器右键重新启动
  • Variable used in lambda expression should be final or effectively final报错解决方案

    Variable used in lambda expression should be final or effectively final报错解决方案 问题背景 解决方案 Lyric 哪里都是你 问题背景 在使用forEach报错 Va
  • 比double精度更高的数据类型_数据类型

    两个重点 数据类型 变量 数据类型 Data Type 数据类型就是数据的类型 每种数据有自己的值和操作规则 C 有三大类语句类型 简单数据类型 结构化据类型 点 这一期只详细讲简单数据类型 另外两个类型的会分别单独做一期 简单数据类型 S
  • Faster Rcnn

    一 公用特征Feature Maps的获取 二 Region Proposal Network Feature Maps bs 1024 38 38 经过3 3卷积 然后分别经过两个1 1的卷积 通道数分别为18 36 18 9 2 代表每
  • JDBC-查询数据(封装工具类)

    使用封装工具类方式查询数据 1 封装注册 连接 关闭工具类 public class JdbcUtils 设置属性 驱动 private static String driver 连接 private static String url m
  • 算法课程设计--A*算法解决特定条件下的最短路径问题

    1 算法课设题目 LOL 峡谷地图最优路径规划 以下问题的计算 按照该地图的基本规则来进行在该地图中分布着各种形状不规则的障碍区域环境 整个地图模型 可以根据需求进行自行简化 问题一 在任意起点与终点之间 规划一条最短路径 问题二 当你拥有
  • 亚信科技AntDB数据库参与“国内首款”事务型性能测试工具开源发布会,树立金融技术风向标

    日前 在中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会共同举办的 国内首款金融数据库性能测试工具DataBench T开源发布会 上 亚信科技受邀进行了 亚信科技数据库测试之道 的主旨演讲 图1 中国信通院DataBench
  • 基于TensorFlow让机器生成赵雷曲风的歌词

    本文转载自公众号量化投资与机器学习 ZXL LHTZ JQXX 原文 致敬赵雷 基于TensorFlow让机器生成赵雷曲风的歌词 责编 王艺 投稿及采访请邮件wangyi csdn net 或 扫描文末二维码 我们基本上收集了赵雷所有唱过的
  • 狂神说Es

    在学习ElasticSearch之前 先简单了解一下Lucene Doug Cutting开发 是apache软件基金会4 jakarta项目组的一个子项目 是一个开放源代码的全文检索引擎工具包 不是一个完整的全文检索引擎 而是一个全文检索
  • MyBatis-Plus系列(一)--MyBatis-Plus集成Druid环境搭建

    一 简介 Mybatis Plus是一款 MyBatis 动态 sql 自动注入 crud 简化 增 删 改 查 操作中间件 启动加载 XML 配置时注入 mybatis 单表 动态 SQL 操作 为简化开发工作 提高生产率而生 Mybat
  • 大数据教育平台数仓实时计算实现 附安装包与脚本

    一 Spark Streaming Spark Streaming 是核心Spark API的扩展 可实现实时数据的可扩展 高吞吐量 容错处理 数据可以从许多来源 如Kafka Flume Kinesis 或TCP套接字 中获取 并可以使用
  • 模型训练评估——交叉验证法的介绍

    与留出法相似 将数据集D划分为k个子集同样存在多种划分方式 为减小因样本划分不同而引入的差别 k折交叉验证通常要随机使用不同的划分重复p次 最终的评估结果是这p次k折交叉验证结果的均值 例如常见的有 10次10折交叉验证 假定数据集D中包含
  • python opencv键盘监听

    目录 读取图片监听 opencv pyinput 监听小键盘 读取图片监听 for file in files a cv2 imread path file cv2 imshow a a k cv2 waitKey 10 0xFF if k
  • 292. Nim Game

    class Solution public bool canWinNim int n return n 4 0 my first solution if n 4 0 return false else return true
  • 新浪博客插入代码(块)及代码高亮…

    新浪博客不能插入代码是一件非常尴尬的事情 这里将介绍如何在新浪博客中加入代码块及其高亮的方法 所需工具 1 XAMPP数据创建软件 2 wordpress 与 codecolorer 3 CSDN博客 步骤 1 安装wordpress 与

随机推荐

  • pycharm IDE报错 ,记事本打开后出现卡顿,之后出现ide错误

    打开IDE之后进行编辑 点击setting出现页面无反应 右下角出现的提示 ide error occurred see detail submit display 点击进去之后 在点击这个display 类似重启IDE的命令 然后就可以继
  • 微服务架构超详细解析,写得太好了!

    本文将介绍微服务架构和相关的组件 介绍他们是什么以及为什么要使用微服务架构和这些组件 本文侧重于简明地表达微服务架构的全局图景 因此不会涉及具体如何使用组件等细节 为了防止不提供原网址的转载 特在这里加上原文链接 https www cnb
  • 什么是IPU?

    在图像识别的SOC中 有一个很重要的单元 IPU Image Processing Unit 图像处理单元 图像处理单元的目标是提供从图像输入 摄像头传感器 电视信号输入等 到显示设备 LCD显示屏 TV输出 外部图像处理单元等 端到端的数
  • 探索OLED拼接屏的特点及在莱山的场景化应用

    涞山oled拼接屏是一种高清晰度的显示屏 由多个oled屏幕拼接而成 它可以用于各种场合 如商业展示 广告宣传 会议演示等 涞山oled拼接屏具有以下特点 1 高清晰度 oled屏幕具有高对比度 高亮度 高色彩饱和度等特点 可以呈现出非常清
  • go-kit grpc调用及中间件封装

    存在问题 grpc 调用问题 通常我们向业务返回会定义如下的结构 code 20000 msg Success data 但是如果我们定义如下的proro grpc的返回值可以在客户端不能直接使用 还需要使用json进行解析 message
  • 计算机网络1:Tcp三次握手和四次挥手

    一 TCP传输的过程 三次握手 1 建立连接并确认连接 三次握手 过程 1 客户端向服务端发出连接请求SYN 1 seq x 等待服务端响应 状态由CLOSED转为SYN SENT 2 服务端做出响应ACK和连接信号SYN 1 seq y
  • linux在dockers安装rides教程

    在Docker中安装Rider是一项非常有用的技能 因为它可以让您在Linux操作系统上进行开发和调试 本文将介绍如何在Docker上安装Rider 步骤1 安装Docker 首先 您需要在Linux操作系统上安装Docker 您可以使用以
  • 清空文件夹下的SVN文件BAT脚本

    清空文件夹下的SVN文件BAT脚本 1 脚本功能 清空文件夹及其子文件下下的所有 svn文件 避免svn提交时冲突 2 脚本内容 echo on color 2f mode con cols 80 lines 25 REM echo 正在清
  • 智能合约相关设计

    1 运行环境 以太坊采用以太坊虚拟机作为智能合约的运行环境 以太坊虚拟机是一个隔离的轻量级虚拟机环境 运行在其中的智能合约代码无法访问本地网络 文件系统或其他进程 对同一个智能合约 查看什么是智能合约 来说 往往需要在多个以太坊虚拟机中同时
  • 详细实现最短路径(迪杰斯特拉算法)

    最短路径 说白了 就是图里从一个顶点到另一个顶点的最小权值之和 今天 小编带大家一起用迪杰斯特拉 Dijkstra 算法实现它吧 目录 一 实现原理 二 代码实现 一 思路 二 代码 一 实现原理 其实 在小编看来 迪杰斯特拉算法与普里姆算
  • ws协议与http协议的异同

    http协议 识别数据内容 与webSocket协议 同 建立在TCP之上 同http一样通过TCP来传输数据 不同 HTTP协议为单向协议 即浏览器只能向服务器请求资源 服务器才能将数据传送给浏览器 而服务器不能主动向浏览器传递数据 分为
  • Selenium及chromedriver安装教程

    文章目录 安装Python环境及Selenium工具包 使用命令行安装 使用Pycharm安装 安装chromedriver驱动 验证 安装Python环境及Selenium工具包 首先 我们需要安装Python环境 安装好了之后需要安装S
  • keras IMDB数据集 LSTM分类

    在keras提供的IMDB数据集中 word被映射为一个大于0的整数 表示该单词出现频率的排名 这样处理的目的是为了方便按照词频过滤单词 其中0用于表示unknown word 载入数据 x train shape 25000 是一个250
  • 如果IBM再给我一次实习机会

    2014年 我拿到了IBM斯图加特R D的实习机会 在连续被索尼和博世拒掉之后 这个实习对我来说弥足珍贵 我学的是通信专业 在这之前与编程相关的活动只有一学期的安卓Lab 还是靠抱队友大腿才及格 在申请时 我的编程能力可以说几乎为0 连我自
  • java: 找不到符号 符号: 类 ResourceVO 位置: 类 com.

    一 java找不到符号 如果你的代码里没有任何问题 但是java报错找不到符号 如下 解决方法
  • 《Pytorch深度学习和图神经网络(卷 2)》学习笔记——第二章

    基于图片内容的处理任务 主要包括目标检测 图片分割两大任务 目标检测 精度相对较高 主要是以检测框的方式 找出图片中目标物体所在坐标 模型运算量相对较小 相对较快 图片分割 精度相对较低 主要是以像素点的集合方式 找出图片中目标物体边缘的具
  • Prometheus 监控之 kafka

    初探 默认情况下 Kafka metrics 所有的 metric 都可以通过 JMX 获取 暴露kafka metrics 支持两种方式 1 在 Kafka Broker 外部 作为一个独立进程 通过 JMX 的 RMI 接口读取数据 这
  • linux:需要注意docker和aws的rds的mysql默认是UTC而不是中国时区

    问题 如题 解决办法 docker参考 mysql时间不对 修改时区 set global time zone 无效 小书生 的博客 CSDN博客 aws参考 https www youtube com watch v B NaqV A1B
  • 数字IC手撕代码--联发科(总线访问仲裁)

    题目描述 当A B两组的信号请求访问某个模块时 为了保证正确的访问 需要对这些信号进行仲裁 请用Verilog实现一个仲裁器 对两组请求信号进行仲后 要求 协议如图所示 请求方发送req request 信号1表示有请求给仲裁器 仲裁器响应
  • es6扩展运算符 (...)

    es6的扩展运算符就是取出参数对象中的所有可遍历属性 拷贝到当前对象之中 let bar a 1 b 2 let baz bar a 1 b 2 实际上是通过Object assign方法实现的 let baz Object assign