each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object ); if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
} // A special, fast, case for the most common use of each
} else {
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;
},
以上是jquery中each的源码,有谁知道,当each中调用不同参数时它是怎么处理的?
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object ); if ( args ) {
if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
} // A special, fast, case for the most common use of each
} else {
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;
},
以上是jquery中each的源码,有谁知道,当each中调用不同参数时它是怎么处理的?
2.针对参数的多样性,可以在方法中对 参数是否传值,传值后类型检测进行具体业务处理each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object );
//很明显,isObj用于判断是否为对象(包含方法,至于原因是: isFunction),否则是数组
if ( args ) {//args 有值时,就使用args,否则else中使用object[ name ]/object[ i++ ]做参数
if ( isObj ) {//是对象时(包含方法),以下逐个对该对象的属性进行调用方法callback
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {//是数组,那么就调用数组里的每一个元素
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
//下一行参数中, name, object[ name ]构建了新的参数arguments进行调用,
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
//我们多数使用是没有参数的
//所以在callback中就有了下标i,目标对象object[ i++ ],原因就在此
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
break;
}
}
}
}return object;
},
1.js方法调用很灵活,它的参数也可以不传,可以多传,也可以不同的位置传不同类型,所以唯一标示该方法的就是方法名称。
2.针对参数的多样性,可以在方法中对 参数是否传值,传值后类型检测进行具体业务处理each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
isObj = length === undefined || jQuery.isFunction( object );
//很明显,isObj用于判断是否为对象(包含方法,至于原因是: isFunction),否则是数组
if ( args ) {//args 有值时,就使用args,否则else中使用object[ name ]/object[ i++ ]做参数
if ( isObj ) {//是对象时(包含方法),以下逐个对该对象的属性进行调用方法callback
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
}
}
} else {//是数组,那么就调用数组里的每一个元素
for ( ; i < length; ) {
if ( callback.apply( object[ i++ ], args ) === false ) {
break;
}
}
}// A special, fast, case for the most common use of each
} else {
if ( isObj ) {
for ( name in object ) {
//下一行参数中, name, object[ name ]构建了新的参数arguments进行调用,
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
}
}
} else {
for ( ; i < length; ) {
//我们多数使用是没有参数的
//所以在callback中就有了下标i,目标对象object[ i++ ],原因就在此
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
break;
}
}
}
}return object;
},
callback,//对对象遍历时的处理函数
args//附加给处理函数中的参数