ES6之扩展运算符

230 阅读1分钟

对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。

1) 复制对象(深拷贝)

let z = { a: 3, b: 4 };
let aClone = { ...z };
// 等同于
let aClone = Object.assign({}, z);

...扩展运算符号只能是针对一维度的对象或数组进行拷贝,是深拷贝。不能对多维进行拷贝,是浅拷贝

2) 合并对象-深拷贝

let ab = { ...a, ...b };
// 等同于
let ab = Object.assign({}, a, b);

3)与解构赋值结合,用于生成对象 --浅拷贝

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x // 1
y // 2
z // { a: 3, b: 4 }

// 浅拷贝
let obj = { a: { b: 1 } };
let { ...x } = obj;
obj.a.b = 2;
x.a.b // 2

4) 扩展某个函数的参数

function baseFunction({ a, b }) {
  // ...
}
function wrapperFunction({ x, y, ...restConfig }) {
  // 使用 x 和 y 参数进行操作
  // 其余参数传给原始函数
  return baseFunction(restConfig);
}