對象無length屬性時IE6/IE7中無法將其轉換成偽數組(ArrayLike)
更新時間:2011年07月31日 21:36:13 作者:
對象無length屬性時IE6/7中無法將其轉換成偽數組(ArrayLike) 的解決方法,需要的朋友可以參考下。
有時需要將數組轉成偽數組(ArrayLike),如下
var ary = ['one','two','three'];
var obj = {}; // 沒有l(wèi)ength屬性
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i + ': ' + obj[i]);
}
IE8/9/Firefox/Safari/Chrome 依次彈出了obj的key及其value。即能轉換成ArrayLike。
但IE6/7下則不能,沒有輸出任何信息表明obj仍然是個空對象。
如果給obj加個length屬性,情況則不同
var ary = ['one','two','three'];
var obj = {length:0}; // 有l(wèi)ength,值為0
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i + ': ' + obj[i]);
}
這次IE6/7(所有瀏覽器)中均彈出了key及其value,都能轉換成ArrayLike
注意,length只能賦值為0而非它值,否則得到的對象key和value就不是一一對應的了。
var ary = ['one','two','three'];
var obj = {length:2}; // 有l(wèi)ength,非零值
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i + ': ' + obj[i]);
}
復制代碼 代碼如下:
var ary = ['one','two','three'];
var obj = {}; // 沒有l(wèi)ength屬性
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i + ': ' + obj[i]);
}
IE8/9/Firefox/Safari/Chrome 依次彈出了obj的key及其value。即能轉換成ArrayLike。
但IE6/7下則不能,沒有輸出任何信息表明obj仍然是個空對象。
如果給obj加個length屬性,情況則不同
復制代碼 代碼如下:
var ary = ['one','two','three'];
var obj = {length:0}; // 有l(wèi)ength,值為0
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i + ': ' + obj[i]);
}
這次IE6/7(所有瀏覽器)中均彈出了key及其value,都能轉換成ArrayLike
注意,length只能賦值為0而非它值,否則得到的對象key和value就不是一一對應的了。
復制代碼 代碼如下:
var ary = ['one','two','three'];
var obj = {length:2}; // 有l(wèi)ength,非零值
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i + ': ' + obj[i]);
}
您可能感興趣的文章:
相關文章
IE6-IE9中tbody的innerHTML不能賦值的解決方法
這篇文章主要介紹了IE6-IE9中tbody的innerHTML不能賦值的解決方法,很實用,需要的朋友可以參考下2014-09-09

