对象的扩展运算符

对象的扩展运算符之前我写过一篇笔记就是说扩展运算符的 可是那个笔记说的并不全面 以前我一直片面的认为 扩展操作符只能作用于数组而不能作用于对象 而且只能在函数调用的时候使用 可实际上扩展操作符是可以作用于对象的 文章目录解构赋值扩展运算符解构赋值应该来说 扩展运算符用在解构赋值中更像是 rest 参数 同样是把目标对象还未读取的字段 分配到指定的对象 例如 let a b c a 12

之前我写过一篇笔记就是说扩展运算符的。可是那个笔记说的并不全面。以前我一直片面的认为,扩展操作符只能作用于数组而不能作用于对象,而且只能在函数调用的时候使用,可实际上扩展操作符是可以作用于对象的。

解构赋值

应该来说,扩展运算符用在解构赋值中更像是rest参数。同样是把目标对象还未读取的字段,分配到指定的对象。例如

let { 
   a, b, ...c} = { 
   a: 12, b: 13, c: 15, d: 16, e: 17}; console.log(a); //12 console.log(b); //13 console.log(c); //{c: 15, d:16, e: 17} 

它跟rest参数很像的一个地方在于它也是只能放在最后一个,如果放在其他的位置上则会报语法错误,例如

let { 
   a, ...b, c} = { 
   a: 12, b: 13, c: 15, d: 16, e: 17}; 

需要注意的是,解构赋值的拷贝是浅拷贝。也就是说,对于像对象这些引用类型,那么拷贝的则是它们的引用。

let obj = { 
   a:{ 
   b: 100}}; let { 
   ...x} = obj; obj.a.b = 1000; console.log(x.a.b); //1000 

扩展运算符

在对象中,扩展运算符虽不是在函数调用时使用,但是效果却也和用在数组上差不多。

可以用对象的扩展运算符来实现对对象的复制(只是字段)。例如

let x = { 
   a: 1, b: 2, c: 3}; let y = { 
   ...x}; console.log(y); //{a: 1, b: 2, c: 3} 

实际上我理解这样的操作就相当于是使用了Object.assign方法。

let x = { 
   a: 1, b: 2, c: 3}; let y = { 
   ...x}; //等同于 Object.assign({ 
   }, x); 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225809.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:29
下一篇 2026年3月17日 上午8:30


相关推荐

  • getClassLoader能否为null

    getClassLoader能否为null前言我们Javaer都知道类想要被加载是需要一个个ClassLoader来执行的,并且类加载的方案叫双亲委派模式,说是双亲,其实就是单亲,可能我们最初的翻译人想让我们的加载器的家庭更完整吧,所以翻译成双亲。默认的类加载器包括BootstrapClassLoader、ExtClassLoader、AppClassLoader,他们都定义在在rt.jar中的sun….

    2022年5月9日
    37
  • Wasserstein距离笔记

    Wasserstein距离笔记Wasserstein 距离 Wasserstein 距离也叫做推土机距离 EarthMover sdistance 这也是由于它的推导过程可以很形象的用挖土填土来解释 这也是因为该距离定义中由一个分布转变为另一个分布所需要的代价和挖土填土的过程十分相似 考虑两个离散的分布 P 和 Q 为了让两个分布相同 我们一个个变量地观察 为了让 P1 和 Q1 相同 我们需要 P1 把手头上的 3 分 2 到 P2 去 这样 P1 和 Q1 都等于 1 此时 P2 4 其他数保持不变 这个过程是不是十分像挖掉 P1 的土填到 P2 上 为了让 P2

    2026年2月12日
    2
  • mybtis jdbctype

    mybtis jdbctype思路:1.在mapper.xml中使用#{参数,jdbctype=VARCHAR}2.在javadao层中使用传入map的方式3.mybatis中就可以应用字段了mybatisjdbctype写法daomapper.xml例子:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapper…

    2022年10月20日
    5
  • 数据库-第一范式、第二范式、第三范式、BC范式、第四范式简析

    数据库-第一范式、第二范式、第三范式、BC范式、第四范式简析在设计与操作维护数据库时,最关键的问题就是要确保数据能够正确地分布到数据库的表中。使用正确的数据结构,不仅有助于对数据库进行相应的存取操作,还可以极大地简化应用程序中的其他内容(查询、窗体、报表、代码等),按照“数据库规范化”对表进行设计,其目的就是减少数据库中的数据冗余,以增加数据的一致性。泛化时在识别数据库中的一个数据元素、关系以及定义所需的表和各表中的项目这些初始工作之后的一个细

    2022年5月24日
    39
  • wifi有如下技术标准(老十块钱值20万)

    前几天在逛某论坛,发现有人在薅随身WiFi,而随身WiFi竟然是安卓系统,能进系统界面。跟风买了一个来折腾。

    2022年4月13日
    198
  • gimp中文版教程_GIMP中文教程.pdf

    gimp中文版教程_GIMP中文教程.pdfGimp中文教程(一)KangJS28年12月一.一.阴影(DropShadow)关键点:3个图层:1.背景图层(透明)2.阴影图层3.实景图层主要命令:路径(B),油漆桶填充(shift+B),混合填充(L),移动(M),滤镜–>高斯模糊操作流程:1.CTRL+N新建一个透明图层2.复制一个阴影图层,使用路径工具在此图层上勾画一个封闭路径并转为选区.3.复制阴…

    2022年6月26日
    113

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号