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中调用不同参数时它是怎么处理的?
解决方案 »
- jquery为什么这样没效果?
- openwysiwyg编辑器如何取值啊?
- 真奇怪,opener象我这样用怎么就不行呢?
- 如何得到一个只要内部线,不要外部线的表格
- 关于KindEditor文本编辑器的赋值问题。
- js取变量名的问题
- 窗口的变量的问题.........急!!!!!!!!!!!!!!!!!!!!!!11(100分,简单而又简单,但又奇怪的东东)
- 一个小小的问题,送上20分
- 如何在整个页面中实现,当焦点进入text控件的时候,将text中的文字全部选中?
- jsp中两个框中内容互换可以添加也可以移除 经过添加移除项提交后通过request.getParameterValues取不到最新数据
- javascript 监听事件高级问题
- 谁知道用JavaScript如何读取国际化的资源文件、谢谢
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//附加给处理函数中的参数