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

相关推荐
AI浩12 小时前
【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
运维·服务器·前端
涔溪12 小时前
CSS 网格布局(Grid Layout)核心概念、基础语法、常用属性、实战示例和进阶技巧全面讲解
前端·css
2401_8784545312 小时前
浏览器工作原理
前端·javascript
西陵13 小时前
为什么说 AI 赋能前端开发,已经不是选择题,而是必然趋势?
前端·架构·ai编程
by__csdn14 小时前
Vue3 setup()函数终极攻略:从入门到精通
开发语言·前端·javascript·vue.js·性能优化·typescript·ecmascript
天天扭码14 小时前
前端如何实现RAG?一文带你速通,使用RAG实现长期记忆
前端·node.js·ai编程
Luna-player15 小时前
在前端中,<a> 标签的 href=“javascript:;“ 这个是什么意思
开发语言·前端·javascript
lionliu051915 小时前
js的扩展运算符的理解
前端·javascript·vue.js
小草cys15 小时前
项目7-七彩天气app任务7.4.2“关于”弹窗
开发语言·前端·javascript
奇舞精选15 小时前
GELab-Zero 技术解析:当豆包联手中兴,开源界如何守住端侧 AI 的“最后防线”?
前端·aigc