数组相信大家已经很熟悉了,那么这篇文章讲讲什么是伪数组以及数组与伪数组的区别
伪数组的定义
拥有length属性,其他属性(索引)为非负整数
不具有数组所具有的方法
常见的伪数组有:
函数参数arguments,DOM对象列表;jQuery中的$(' ')等
伪数组与数组的区别
索引(index)和长度(length)
伪数组的索引,就是那些键值对的key,没有真正的顺序,长度是手动设置的属性
数组的索引和长度是内置属性
Array.prototype
伪数组没有Array.prototype,它只是一个对象
数组有Array.protype,他是对象的同时也是数组
判断是否是数组的方法
Array.isArray(arr)//方法一
arr instanceof Array//方法二
伪数组存在的意义
让一些对象也可以使用数组方法,可以通过call(),bind(),apply()方法实现
注:方法的返回值类型不会改变
伪数组转换成真实数组
方法一:使用Array.from() --ES6
方法二:使用数组的slice()方法,他返回的是数组,使用call或apply指向伪数组
var arr = Array.prototype.slice.call (fArr) fArr--伪数组
方法三:jq的makeArray(),toArray()方法,他们也可以实现伪数组转换数组的功能
方法四:ES6解构赋值 var newArr=[...arguments]