「クラス配列」とは何か知っていますか.

1663 ワード

紹介する
クラス配列:配列に似たオブジェクトであり、元のバイナリデータにアクセスするためのメカニズムを提供しますが、本当の配列ではありません.
jsにはクラス配列のオブジェクトがたくさんあります.例えばargumentsNodeListHTMLCollectionjQuery・などです.
MDN-JavaScriptタイプ化配列
オブジェクトのプロパティ
1.所有length属性
var a = document.getElementsByTagName("div");
a.__proto__; // HTMLCollection {}        
a.length; // 44

2.数値の下付き文字でオブジェクトにアクセスできます
a[0]; // 
...

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