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

js迭代器问题

JScript code

var each = function(obj, fn){
    /**
    *在这里写代码,要求构造一个迭代器,对数组,对象进行遍历
    *完成下面要求输出的结果
    */
};

try{
    var data1 = [4,5,6,7,8,9,10,11,12];
    var data2 = {
        "a": 4,
        "b": 5,
        "c": 6
    };
    
    console.group(data1);
    
    each(data1, function(o){
        if( 6 == this )
            return true;
        else if( 8 == this )
            return false;
        console.log(o + ": \"" + this + "\"");
    });
    
    console.groupEnd();

    /*------[执行结果]------

    1: "4"
    2: "5"
    4: "7"

    ------------------*/
    
    console.group(data2);
    
    each(data2, function(v, n){
        if( 5 == this )
            return true;
        console.log(n + ": \"" + v + "\"");
    });
    
    console.groupEnd();

    /*------[执行结果]------

    a: "4"
    c: "6"

    ------------------*/
    
}catch(e){
    console.error("第1题执行出错,错误信息: " + e);
}





------解决方案--------------------
探讨谢谢你 我有个问题
if(toString(obj[i]) === "[object Object]" || toString(obj[i]) === "[object Array]"){
ret = fn.call(obj[i], i, obj[i]);

这句话是什么意思啊? 能帮我解答下吗