<script>
window.onload = function(e){
//系统自带的伪数组
var res = document.querySelectorAll("div");//假如html中有三个div
//自定义的伪数组
var obj = {0:"abc",1:"123",length:2}
//真数组
var arr = [];
[].push.apply(arr,res);
console.log(arr); //打印出 (3)[div,div,div],同样将res换成obj打印成2["abc","123"]
}
</script>
以上结果可以看出,实现和伪数组转成真数组,但是在IE8以下,系统自带的伪数组可以完美的转变成真数组,但是自己定义的伪数组变成真数组的时候就会报错。接下来做进一步的修改:
<script>
window.onload = function(e){
//自定义的伪数组
var obj = {0:"abc",1:"123",length:2}
//真数组
var arr = [];
//slice()的作用是取出数组中的元素slice(2,4)相当于取出2到4,不包括4
var arr = [].slice.call(obj);
console.log(arr); //打印出{"abc","123"}
}
</script>
好啦,如果想看真数组转成伪数组,就看我的apply()和call()使用那一片文章,这是哪一篇的补充。