正如已经提到的,它toArray()
是针对 jQuery 对象的。
$.makeArray()
类似于 JSArray.prototype.slice.call()
或[].slice.call()
简称,尽管后者实例化一个对象[]
但是处理length
价值过高的 POJO 是有区别的
例子
1.
$.makeArray({ 0:'a', 1:'b', length:1 })
// ["a"]
[].slice.call({ 0:'a', 1:'b', length:1 })
// ["a"]
2.
$.makeArray({ 0:'a', 1:'b', length:4 })
// { 0:'a', 1:'b', length:4 } // WUT?
[].slice.call({0:'a', 1:'b', length:4})
// ["a", "b", undefined, undefined]
3.
$.makeArray({12:'a', 13:'b', length:1})
// { 12:'a', 13:'b', length:1 } // WUT?
[].slice.call({12:'a', 13:'b', length:1})
// [undefined]
4.
$.makeArray({ 0:'a', 2:'b', length:2 })
// { 0:'a', 2:'b', length:2 } // WUT?
[].slice.call({ 0:'a', 2:'b', length:2 })
// ["a", undefined]
因此$.makeArray()
,只要找不到具有特定索引的键,就简单地返回输入对象。
只有在转换数组中具有适当数量的项目的类似数组的对象时才能正常工作,例如函数arguments
、、nodeList
jQuery 集合等。