有時需要將數組轉成偽數組(ArrayLike),如下
復制代碼 代碼如下:
var ary = ['one','two','three'];
var obj = {}; // 沒有length屬性
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}; // 有length,值為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}; // 有length,非零值
Array.prototype.push.apply(obj, ary);
for(var i in obj){
alert(i + ': ' + obj[i]);
}