日期:2014-05-16  浏览次数:20446 次

数组长度问题
var list = W.$.dialog.list;
for (var i in list) {
  alert(list[i].id);
}

上面这些都没有问题,能够输出信息,但下面这句有问题
alert(list.length); list数组里明明都有对象存在,要不然上面那段代码也输出不了值来,但 list.length 输出的值怎么会是 undefined 




------解决方案--------------------
list不一定是个数组
也可能是个对象,这个对象没有length属性
------解决方案--------------------
for(x in y )

这个写法不是只针对数组的
------解决方案--------------------
var testobj={};
testobj[2]=123;
testobj.a="a";
alert(testobj[2]);//弹出123,这个测试可以回答你的疑问
alert(testobj["a"]);//弹出a

所以可以用下标访问不见得是数组
------解决方案--------------------
list 如果是 json 对象的话,上述循环通过.
但json对象 没有 length 属性的
------解决方案--------------------
定义一个变量在循环中累加额
------解决方案--------------------
for in不仅可以迭代数组,还可以枚举对象的属性
在js中,对象调用属性,即可以使用“.”也可以使用“[]”,它们之间有一点区别的
要想判断一个对象是否为数组可用下面函数:
function isArray(arr){
if(!arr) return false;
return Object.prototype.toString.call(arr) === '[object Array]';
}