ホームページ  >  記事  >  ウェブフロントエンド  >  オブジェクトに長さ属性がない場合、IE6/IE7 では擬似配列 (ArrayLike) に変換できません_javascript ヒント

オブジェクトに長さ属性がない場合、IE6/IE7 では擬似配列 (ArrayLike) に変換できません_javascript ヒント

WBOY
WBOYオリジナル
2016-05-16 18:04:191155ブラウズ

次のように、配列を擬似配列 (ArrayLike) に変換する必要がある場合があります

コードをコピーします コードは次のとおりです:

var ary = ['one','two','three'];
var obj = {}; // 長さ属性なし
Array.prototype.push。 apply(obj, ary);
for(var i in obj){
alert(i ': ' obj[i])

IE8/9/ Firefox/Safari/Chrome では、オブジェクトのキーとその値が順にポップアップ表示されます。これは ArrayLike に変換できます。
しかし、これは IE6/7 では不可能です。obj がまだ空のオブジェクトであることを示す情報は出力されません。
obj に length 属性を追加すると状況は異なります

コードをコピー コードは次のとおりです:
var ary = ['one','two','three'];
var obj = {length:0} // 長さがあり、値は 0
配列.prototype.push.apply( obj, ary);
for(var i in obj){
alert(i ': ' obj[i]);


今回はIE6/7(すべてのブラウザでキーとその値がポップアップします)、ArrayLikeに変換できます
長さには他の値ではなく0の値のみを割り当てることができることに注意してください。それ以外の場合は、取得したオブジェクトのキーと値は 1 対 1 に対応しません。


var ary = ['one',' two', 'three'];
var obj = {length:2} // 長さ、ゼロ以外の値があります
Array.prototype.push.apply(obj, ary); (var i in obj ){
alert(i ': ' obj[i]);

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。