现在的位置: 首页 > 综合 > 正文

jQuery源码分析3: jQuery.each

2019年10月30日 ⁄ 综合 ⁄ 共 948字 ⁄ 字号 评论关闭

jQuery源码分析3: jQuery.each

each: function( object, callback, args ) {
    var name, i = 0,
        length = object.length,
        isObj = length === undefined ||
jQuery.isFunction
( object );  //< 这里isObj为true时只能说明object不是伪数组,或者是函数对象
 
    if ( args ) {  //< 判断是否指明参数
        if ( isObj ) {  //<  若object是对象,则使用for...in遍历object
            for ( name in object ) {
                if ( callback.apply( object[ name ], args ) === false ) {
                    break;
                }
            }
        } else {  //<  若object是数组,则使用for(var i = 0; i < length; i++)来遍历object
            for ( ; i < length; ) {
                if ( callback.apply( object[ i++ ], args ) === false ) {
                    break;
                }
            }
        }
 
    // A special, fast, case for the most common use of each
    } else {  //< 对外发布的接口默认都使用key,value作为callback的参数
        if ( isObj ) {
            for ( name in object ) {
                if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
                    break;
                }
            }
        } else {
            for ( ; i < length; ) {
                if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
                    break;
                }
            }
        }
    }
 
    return object;
},

通用遍历方法,可用于遍历对象和数组。

抱歉!评论已关闭.