erge: function(first, second) {  //合并数组(重复项不消除)http://www.zhangxinxu.com/jq/api14/jQuery.merge_first_second.php
var i = first.length, j = 0; if ( typeof second.length === "number" ) {//有length属性的话,用这种方法
for ( var l = second.length; j < l; j++ ) {
first[ i++ ] = second[ j ];
}

} else {{//没有length属性的话,用这种方法
while ( second[j] !== undefined ) {
first[ i++ ] = second[ j++ ];
}
} first.length = i; return first;
},请问下大家,为什么这里要根据有没length属性来使用两种方法呢??既然传进来的是数组,不是一定有该属性吗??
请指教!~谢谢~~

解决方案 »

  1.   

    jQuery的merge方法,不只是数组的合并,也可以做对象属性的合并,而对象是没有length属性的!
      

  2.   

    对象好像不能通过索引访问吧? var gg={ll:"l1"}
        var g = gg[0];
       这个g为undefined..
      

  3.   

    对象是不能用索引来访问,
    var obj = {
       name : 'tomcat',
       age : 12
    };
    alert( obj['name'] ) // tomcat;
    for( var i in obj ){
       alert( obj[i] ) // 第一次为 tomcat ,第二次为 12 
    }
    如果把for改为while不就是
    var i ;
    while( obj[i] ){
      alert( obj[i] )
    }
      

  4.   

    额..FOR IN那个是可以,因为遍历的是属性名..
    但是我的例子中,I和J都是数字哦,而且每次循环+1...应该和FOR IN的那个不一样吧