想将数组的各个值作为函数的多个参数传入
使用Function.prototype.apply 的方式进行调用
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction.apply(null, args);
使用spread syntx,展开语法
function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);
所有参数都可以通过展开语法来传值,也不限制多次使用展开语法。
//与普通参数混合使用
function myFunction(v, w, x, y, z) { }
var args = [0, 1];
myFunction(-1, ...args, 2, ...[3]);
//new 时
var dateFields = [1970, 0, 1]; // 1970年1月1日
var d = new Date(...dateFields);
//数组复制,浅copy,不适用于多维数组
var arr = [1, 2, 3];
var arr2 = [...arr]; //like arr.slice(), arr 不受影响
arr2.push(4);
//连接多个数组
var arr3 = arr1.concat(arr2);
var arr3 = [...arr1, ...arr2];//...arr1 就相当于把arr1 数组中的数据遍历出来
var arr3 = [...arr2, ...arr1];
//应用在对象上
var obj1 = { foo: 'bar', x: 42 };
var obj2 = { foo: 'baz', y: 13 };
//对象复制
var clonedObj = { ...obj1 };
//合并对象
var mergedObj = { ...obj1, ...obj2 };
...abcArray 相当于把数组展开为逗号隔开的参数
['cilantro', ...abcArray, 'coriander'];
['cilantro', 'a','b','c', 'coriander'];