想问下cloudgamer大牛的作品中经常出现的forEach,前面那个if有什么用?var forEach = function(array, callback, thisObject){
if(array.forEach){
array.forEach(callback, thisObject);
}else{
for (var i = 0, len = array.length; i < len; i++) { callback.call(thisObject, array[i], i, array); }
}
}

解决方案 »

  1.   

    fieefox js1.6以上内置对象Array已经内置了forEach()方法,ie则没有,需要自己定义
    if()就是判断Array是否已经定义了forEach()方法
      

  2.   

    主要判断array对象是否实现了forEach方法,如果没有实现此方法会出现错误,在js里边undefined可以表示为false,由于不知道array对象是否实现了forEach方法,故作上述灵活处理的技巧
    Object.prototype.forEach=function(items,func){
    if(items){
         for(temp in items){
    if(typeof(items[temp])!="function"){
    func(temp);
                    }
         }
    }
    }
    var arr = ['aa','bb','cc'];
    arr.forEach(arr,function(item){
    alert(item);
    });
    这是一个简单的带有Ruby风格的迭代实现,这种实现在很多js框架中有所体现如dojo,prototype