# 此页面贡献者:小k 铲铲
类数组和数组
类数组 (array-like object)
类数组顾名思义就是像数组的对象。常见的类数组对象有 arguments,HTML collections,NodeList等等。一般有如下三个特点:
- 不是数组
- 有length属性,值为非负整数,且不超过
Math.pow(2,32) - 1
数组 (array)
数组是用来存储多个值的对象,每一个值有一个数字索引,并且可以是任意类型。
对象的索引是字符串,数组的索引是数字。
同时数组作为一个单独的数据类型也有自己特定的一些方法,如join
push
shift
等。
相同点/不同点
- 都有length属性
- 都是对象
const obj = { 'first': 1, 'second': 2, length: 3 }
obj instanceof Object // true
[] instanceof Object // true
- 类数组的length不会自增
const obj = { 'first': 1, 'second': 2, length: 3}
obj.length // 3
obj.third = 3
obj.length // 3
- 类数组没有原生数组的方法
// 因为类数组不是用数组构造函数生成的,所以不会继承数组原型上的方法
// 可以通过以下途径将 object like array 转化为 array
Array.prototype.slice.call(arguments)
Array.from(arguments)