0%

array-apply

最近看Vue关于渲染函数一节发现这样一段代码:

1
2
3
4
5
6
7
render: function (createElement) {
return createElement('div',
Array.apply(null, { length: 20 }).map(function () {
return createElement('p', 'hi')
})
)
}

Array的apply方法来自Function.prototype.apply方法,第一个this参数这里没用,设置为null。而第二个参数接受一个类数组对象或者数组,将其作为arguments传入Array函数。相当于Array.apply(null, Array(20))

直接调用Array(20)会产生一个具有20个空索引的数组。map方法只能迭代实际的值,而不能迭代空索引。而上面的方法实际上可以产生一个长度为20,值全为undefined的数组,可以有效使用map方法。