【发布时间】:2019-08-14 14:46:59
【问题描述】:
let a = {0: 'a', 1: 'b', length: 2}
Array.apply(null, a) // ['a', 'b']
使用 Array 构造函数是将类数组对象转换为数组的最快方法,例如jsperf
我想弄清楚它是如何工作的,但我失败了。在ECMAScript-262,我找不到对应的方法来解释那个代码。
为什么 Array 构造函数接受类似数组的对象可以将其转换为 Array。
Difference between Array.apply(null, Array(x) ) and Array(x)
Why does Array.apply(null, [args]) act inconsistently when dealing with sparse arrays?
【问题讨论】:
-
既然你提到了 ECMAScript,你的答案就在这里:tc39.es/ecma262/#sec-array-items。简而言之,
Array.apply(null, a);就像用...items调用构造函数一样。不过,我不确定是否调用了构造函数签名,或者是否调用了接受 ...items 和 length 的构造函数。
标签: javascript arrays ecmascript-6 ecma262