伪数组
伪数组介绍
1.伪数组是一种类似数组的对象,并提供了一种用于访问原始二进制数据的机制。
在伪数组上调用Array.isArray()会返回false.此外,并不是所有可能用于正常数组的方法都能被伪数组所支持(如push和pop)
2.拥有length属性,其他属性(索引)为非负整数(对象中的索引会被当成字符串来处理,这里当作非负整数川来理解)
3.不具有数组所具有的方法,但能正常使用数组的很多方法
常见的伪数组:
1.函数内部的arguments 2.DOM对象列表(比如通过document.getElementsByTags得到的列表) 3.jQuery对象(比如$("div"))
伪数组存在的意义
是可以让普通的对象也能正常使用数组的很多方法
伪数组与数组的区别
长度
- 真数组的长度是可变的
- 伪数组的长度不可变 方法的使用
- 伪数组不具有数组所具有的方法,但能正常使用数组的很多方法
对象与数组的关系
所有 JavaScript 的内置构造函数都是继承自 Object.prototype 。 在这个前提下,可以理解为使用 new Array() 或 [] 创建出来的数组对象,都会拥有 Object.prototype 的属性值
- 对象没有数组Array.prototype的属性值,类型是Object,而数组类型是Array
- 数组是基于索引实现,length会自动更新,而对象是键值对
- 使用对象可以创建伪数组,伪数组可以正常使用数组的大部分方法
var obj = {};// 拥有 Object.prototype 的属性值
var arr = [];
//使用数组直接量创建的数组,由于 Array.prototype 的属性继承自 Object.prototype,
//那么,它将同时拥有 Array.prototype 和 Object.prototype 的属性值