不显试使用循环构造一个空数组,同学们有什么想法吗 那天我在stackoverflow上看到一种方法很有趣,和大家分享下。
21 回复
@alsotang 好吧,undefined也是能运行的,不过new Array 没有真的生成10个undefine。他显示的是[undefined * 10]. 解决办法是 Array.apply(null, {length:10})
@coordcn console.dir([1,2]),数组和类数组对象的序列化结果是一样的,只是数组的原型会带有很多方法,比如slice,join之类的,var args = Array.prototype.slice.call(arguments);,这个可以把类数组对象转换为数组。
@waksana 这样也可以
Array.apply this, [,,,,,,,,,]
Array.apply this, Array(10)
Array.apply this, Array.apply(this, [10])
Object.apply(this, argumenst)传参方式是一个由各个参数组成的数组或类数组(一个有length属性的对象),传入参数个数取决于 length 的值。比如
Array.apply this, {
0:0
1:1
2:2
length:4
}
#输出为 [ 0, 1, 2, undefined ]
而这实际上是Object.apply的用法,Array只是调用而已,它不负责处理{length:10}
具体类数组相关可以参考这里 http://blog.segmentfault.com/f2e/1190000000415572