本人新手, 最近在看有关javascript
相关的书籍的时候遇到了这么一段代码, 不是特别理解, 有关apply
绑定的, 代码如下:
const concatAll = (array) => {
let result = []
for (let value of array) {
result.push.apply(result, value)
}
return result
}
let letters = [['a', 'b'], ['c', 'd']]
console.log(concatAll(letters)) // ['a', 'b', 'c', 'd']
简单来说concatAll
这个函数就是可以将嵌套数组转换成一个数组, 我所不理解的是代码第4
行, apply
这个方法到底是怎样运行的, 之前学有关this
的知识也是有点迷迷糊糊的, 不是特别理解, 希望能有前辈给出一个详细的解答
谢谢!
这个是
apply
的一个比较巧妙的用法,apply
的第一个参数是this
对象,第二个参数是数组集合。这里巧妙的点在于她可以将一个数组迷人的转换成一个参数列表
([paramA, paramB, paramC])
转换成(paramA, paramB, paramC)
。利用这个特点,可以高效使用她用于数组的合并:Array.prototype.push
!push
方法没有提供push一个数组,但是它提供了push(param1,param,…paramN)
所以同样也可以通过apply
来转换一下这个数组。也就是你代码的实现。不知道你懂了没:)