
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.7 扩展运算符
扩展运算符的主要目标是扩展数组或对象中的元素。
1.apply
扩展运算符的一个常见用法是将数组扩展到函数参数中。在此之前,你要实现这个功能需要用的是Function.prototype.apply,示例如下。

而现在你只需要在参数前加上...就可以做到这一点,示例如下。

这里,我们将args数组传到了关键字的位置。
2.在解构中使用
之前,我们已经在解构中看到了这种用法。

这里使用扩展运算符,只是为了让你在解构时更容易捕获数组的其余元素。
3.数组扩展
扩展运算符允许你轻松地将扩展后的数组放入另一个数组,示例如下。

你可以把扩展后的数组放入任意位置,并获得期望的效果。

4.对象扩展
同样,你也可以使用扩展运算符把一个对象放入另一个对象。一个常见的用例是向对象中添加属性,而不是改变原始属性。

对于对象来说,扩展的顺序很重要。它的工作原理和Object.assign相似,并且可以做你所期待的事情——后面的属性覆盖前面的属性。

另一个简单的用例是实现浅拷贝。


5.小结
apply是一个你经常在JavaScript中使用的功能,所以当有一个不需要在this代码关键字上使用“丑陋”的null的新语法时,感觉是非常棒的。此外,当你在部分数组上对数组进行操作时,这提供了一种简洁的语法,专门用于将数组移出(解构)或将其写入(分配)另外的数组。