es6之扩展运算符 三个点(…)

发布于 分类 html5-js-css

0311lc.com说:
let bar = { a: 1, b: 2 };
let baz = { ...bar }; // { a: 1, b: 2 }

上述方法实际上等价于:

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

内部的同名属性会被覆盖掉

let bar = {a: 1, b: 2};
let baz = {...bar, ...{a:2, b: 4}};  // {a: 2, b: 4}
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"}

扩展运算符同样可以运用在对数组的操作中。

  • 可以将数组转换为参数序列
  • function add(x, y) {
      return x + y;
    }
    
    const numbers = [4, 38];
    add(...numbers) // 42
    • 可以复制数组
    • const arr1 = [1, 2];
      const arr2 = [...arr1];
      • 扩展运算符可以与解构赋值结合起来,用于生成数组
        const [first, ...rest] = [1, 2, 3, 4, 5];
        first // 1
        rest  // [2, 3, 4, 5]

        字符串转为真正的数组

        [...'hello']
        // [ "h", "e", "l", "l", "o" ]

        些数据结构转为数组    等价  es5中的Array.prototype.slice.call(arguments)写法

      • // arguments对象
        function foo() {
          const args = [...arguments];
        }

         


发表评论

电子邮件地址不会被公开。 必填项已用*标注