var list = W.$.dialog.list;
for (var i in list) {
    alert(list[i].id);
}上面这些都没有问题,能够输出信息,但下面这句有问题
alert(list.length);  list数组里明明都有对象存在,要不然上面那段代码也输出不了值来,但 list.length 输出的值怎么会是 undefined 

解决方案 »

  1.   

    list不一定是个数组
    也可能是个对象,这个对象没有length属性
      

  2.   

    for(x in y )这个写法不是只针对数组的
      

  3.   

    var testobj={};
    testobj[2]=123;
    testobj.a="a";
    alert(testobj[2]);//弹出123,这个测试可以回答你的疑问
    alert(testobj["a"]);//弹出a所以可以用下标访问不见得是数组
      

  4.   

    list 里面存放的是n个对象,那我怎么能得到它存放对象的数量呢?
      

  5.   

    list 如果是 json 对象的话,上述循环通过.
    但json对象 没有 length 属性的
      

  6.   

    for in不仅可以迭代数组,还可以枚举对象的属性
    在js中,对象调用属性,即可以使用“.”也可以使用“[]”,它们之间有一点区别的
    要想判断一个对象是否为数组可用下面函数:
    function isArray(arr){
       if(!arr) return false;
       return Object.prototype.toString.call(arr) === '[object Array]';
    }