你知道什麼叫「類數組」嗎?

介紹

類數組:是一種相似數組的對象,並提供了一種用於訪問原始二進制數據的機制,但不是真正的數組。數組

js 中類數組對象有不少,例如argumentsNodeListHTMLCollectionjQueryapp

MDN - JavaScript 類型化數組prototype

對象特性

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()code

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
相關文章
相關標籤/搜索