ここで、次の条件を満たすオブジェクトは疑似配列
1 と呼ばれ、長さ属性
2 を持ち、インデックスによるデータの格納
3 を持ち、配列のプッシュ、ポップ、その他のメソッド
を持たないものとします。
1. 関数内の引数。
2. document.forms、Form.elements、Select.options、document.getElementsByName()、document.getElementsByTagName()、childNodes/children などを通じて取得されるコレクション (HTMLCollection、NodeList)。
3.
var obj={};
obj[0] = "1";
obj[2] = "3"; .length = 3;
プッシュ、ポップ、シフト、結合などの一部の配列メソッドがありません。場合によっては、プッシュ、ポップ、その他のメソッドを使用できるように、これらの疑似配列を実際の配列に変換する必要があることがあります。以下はツール関数 makeArray です
コードをコピー
コードは次のとおりです: var makeArray = function(obj) { return Array.prototype.slice.call(obj,0);
}
try{
Array.prototype.slice.call(document.documentElement.childNodes, 0) )[0].nodeType;
}catch(e){
makeArray = function(obj){
for(var i=0,len=obj.length ; ires.push(obj[i]);
res
}
}
3 つの疑似配列
コードをコピー
fun(3 ,5);
// ページ上に複数の段落要素 p があると仮定します
var els = document.getElementsByTagName("p"); makeArray(els);
alert(ary1.constructor);
//特殊な JS オブジェクト (jquery オブジェクトなど)
var
obj[0];一";
obj[1] = "二";
obj[2] = "三";
obj.length = 3;
var ary2 = makeArray(obj);
アラート(ary2.constructor);