对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011-07-31 21:36
531 查看
有时需要将数组转成伪数组(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]);
}
复制代码 代码如下:
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]);
}
您可能感兴趣的文章:
相关文章推荐
- 对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
- 对象无length属性时IE6/7中无法将其转换成伪数组(ArrayLike)
- Mybatis的分页插件PageHelp:Page对象中的pageSize等属性无法序列化,无法转换为json字符串
- 数组的length属性,只是下标数字+1。和数组对象的属性有多少个,方法有多少个没关系。
- easyui datagrid报 SCRIPT5007: 无法获取属性“length”的值: 对象为 null 或未定义
- php XML 对象数组转换成普通的数组,php取出xml属性
- 将具有length属性的对象转成数组
- (转帖)关于easyui中的datagrid在加载数据时候报错:无法获取属性"Length"的值,对象为null或未定义
- js中将具有数字属性名的对象转换为数组
- 转对象(含length属性)成数组Array.prototype.slice.call(arguments)
- js中将具有数字属性名的对象转换为数组
- 认识JavaScript数组对象的length属性
- Jquery-根据标签的name属性,获取其value值。存入对象并且转换为Json数组
- json字符串、json对象、数组 三者之间的转换
- char字符串数组与string之间的转换,以及sizeof,strlen,length的区别
- json字符串、json对象、数组 三者之间的转换
- 每个数组都有一个属性length指明它的长度
- js通过map和set判断数组中的对象的某个属性是否有重复
- 数组与对象相互转换
- java将对象列表中的某个属性转换成List或Map