伪数组/类型化数组的简单了解

327 阅读1分钟

伪数组

伪数组介绍

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 的属性值