对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
发布时间:2016-12-30 来源:查字典编辑
摘要:有时需要将数组转成伪数组(ArrayLike),如下复制代码代码如下:varary=['one','two','three'];varobj...

有时需要将数组转成伪数组(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]);

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类