ES6...扩展操作符骚操作

复制和合并数组变得更为简洁。不需要使用 concat() 方法或 slice() 方法,一个 ... 操作符已经足够:

js 复制代码
    const arr1 = [10, 20, 30];

    const copy = [...arr1];

    console.log(copy);    // → [10, 20, 30]

    const arr2 = [40, 50];

    const merge = [...arr1, ...arr2];

    console.log(merge);    // → [10, 20, 30, 40, 50]

将数组作为一个需要单独一个个传入参数的函数的参数

js 复制代码
    const arr = [10, 20, 30]

    // equivalent to
    // console.log(Math.max(10, 20, 30));
    console.log(Math.max(...arr));    // → 30

对象属性展开复制

js 复制代码
    const obj1 = {
      a: 10,
      b: 20
    };

    const obj2 = {
      ...obj1,
      c: 30
    };

    console.log(obj2);    // → {a: 10, b: 20, c: 30}

如果存在相同的值 后者覆盖前者

js 复制代码
    const obj2 = {
      ...obj1,
      a: 30
    };

    console.log(obj2);    // → {a: 30, b: 20}

合并对象 类似于object.assign

js 复制代码
    const obj1 = {a: 10};
    const obj2 = {b: 20};
    const obj3 = {c: 30};

    // ES2018
    console.log({...obj1, ...obj2, ...obj3});    // → {a: 10, b: 20, c: 30}

    // ES2015
    console.log(Object.assign({}, obj1, obj2, obj3));    // → {a: 10, b: 20, c: 30}

不过,扩展属性并不总能生成与 Object.assign() 相同的结果 具体自己去试验下 要点 == setter

相关推荐
Su米苏14 分钟前
关于@vue-office/excel 渲染异常滚动失去内容
前端·vue.js·excel
灯澜忆梦16 分钟前
【基于GO的Web开发10】gin获取HTML-Form表单提交参数
前端·后端·golang·html·gin
撑伞的鱼99371 小时前
2026年前端AI编程工具评测:Figma 还原、组件复用、跨文件联动三项对比
前端·ai编程·figma·效率工具·ai编程工具
码视野1 小时前
基于 Vue3 + Element Plus 的【微短剧剧本智能创作与分镜生产协同系统】设计与实现(含PRD/三端源码/大屏)
前端·人工智能·vue3
zzzzzz3101 小时前
36K stars 的“酷炫组件”,到底该怎么用才不显得用力过猛?
前端·react.js·动效
2401_894915534 小时前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
rockey6279 小时前
C#脚本引擎之AScript与Jurassic、Jint对比
javascript·c#·.net·js·script·动态脚本
Profile排查笔记10 小时前
指纹浏览器哪个好?从 Profile、代理、权限和自动化能力判断是否适合
前端·人工智能·后端·自动化
lzhdim10 小时前
12、JavaScript常见的内存泄露问题 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
denggun1234510 小时前
yield
前端·数据库·python