看到生成 0 …(N-1)数列的一种写法
Array.apply(null, {length: N}).map(Function.call, Number);
map
的过程中, 怎么就变成Number(index)
了呢?
1
mosliu 2017-09-29 15:54:11 +08:00
改一下,看看能不能明白吧:、
Array.apply(null, {length: 3}).map(Function.call, (index,obj)=>{return index}); |
2
Maic 2017-09-29 19:00:08 +08:00 via iPhone
这样写是为了秀么,好贱啊…… new Array(3).fill(‘ sb ’).map((v,i)=>i)不行么,或者直接 Object.keys(new Array(3))
|
3
Maic 2017-09-29 19:01:48 +08:00 via iPhone
Array.apply 就是 newArray 的另一种写法,后面的 function call 就是 map 的回调函数而已
|
4
MinonHeart 2017-09-29 19:08:14 +08:00
Array.apply(null, {length: 3}).map(Function.call.bind(Number));
var callBindNumber = Function.call.bind(Number); callBindNumber(value, index, array); 相当于调用 Number.call(value, index, array); 因为 call 已经 bind 了 Number,第一参数无效,就变成 Number(index, array),Number 忽然第二参数就是 Number(index) |