数组的扩展运算符
扩展运算符(spread)是三个点(…)。它是将一个数组转为用逗号分隔的参数序列。
let arr = [];
arr.push(...[1,2,3,4,5]);
console.log(arr); //[1,2,3,4,5]
console.log(1, ...[2, 3, 4], 5) //1 2 3 4 5
作用
1.合并数组
const a1 = [1, 2, 3], a2 = [4], a3 = [5, 6];
const b = [...a1, ...a2, ...a3] // [1, 2, 3, 4, 5, 6]
2.解构赋值
const [first, ...rest] = [1, 2, 3, 4, 5, 6];
first // 1
rest // [2, 3, 4, 5, 6]
扩展运算符运用于数组赋值,只能放在参数的最后一位,否则报错
const [first, ...middle, last] = [1, 2, 3, 4, 5] //报错
3.可以将数组转换为参数序列
function add(x, y) {
return x + y;
}
const numbers = [4, 38];
add(...numbers) // 42
4.实现interator接口的对象
const nodelist = document.querySelectorAll('div'); //nodelist是类似数组的对象
const array = [...nodelist]
对象的扩展运算符
对象中的扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中,这种拷贝是一种浅拷贝
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 }
Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。