乐趣区

关于前端:你知道什么叫类数组吗

介绍

类数组:是一种相似数组的对象,并提供了一种用于拜访原始二进制数据的机制,但不是真正的数组。

js 中类数组对象有很多,例如 argumentsNodeListHTMLCollectionjQuery

MDN – JavaScript 类型化数组

对象个性

1. 领有 length 属性

var a = document.getElementsByTagName("div");
a.__proto__; // HTMLCollection {} 属于类数组对象
a.length; // 44

2. 能够应用数字下标形式拜访对象

a[0]; // <div id="app">...</div>

3. 不能应用数组原型办法,如 slice、pop 等

a.slice; // undefined

4. 应用 instanceof 操作不属于 Array

a instanceof Array; // false
a instanceof Object; // true

5. 能够被转换为真数组

Array.prototype.slice.call()

var arr = Array.prototype.slice.call(a)
arr instanceof Array; // true

Array.from()

var arr = Array.from(a)
arr instanceof Array; // true

6. 可自定义其余属性

a.name = 'div 汇合';

创立一个类数组

// 1. 创立空对象
var array_like = {};

// 2. 增加下标属性
array_like[0] = 'a';
array_like[1] = 'b';

// 3. 增加 length 属性 和 push 属性
array_like.length = 2;
array_like.push = Array.prototype.push;

// 4. 调用下
array_like.push('c')

// 5. 检测
console.log(array_like[2]) // c
console.log(array_like.length) // 3
console.log(array_like instanceof Array) // false

// 6. 转换为真数组
var arr = Array.prototype.slice.call(array_like);
arr instanceof Array; // true
退出移动版