zl程序教程

您现在的位置是:首页 >  其它

当前栏目

jqueryeach()源代码

源代码 jqueryeach
2023-06-13 09:14:26 时间
复制代码代码如下:

//argsisforinternalusageonly
each:function(object,callback,args){
varname,i=0,
length=object.length,
isObj=length===undefined||jQuery.isFunction(object);
if(args){
if(isObj){
for(nameinobject){
if(callback.apply(object[name],args)===false){
break;
}
}
}else{
for(;i<length;){
if(callback.apply(object[i++],args)===false){
break;
}
}
}
//Aspecial,fast,caseforthemostcommonuseofeach
}else{
if(isObj){
for(nameinobject){
if(callback.call(object[name],name,object[name])===false){
break;
}
}
}else{
for(varvalue=object[0];
i<length&&callback.call(value,i,value)!==false;value=object[++i]){}
}
}
returnobject;
},

分析:jquery文档说each(callback)作用是以每一个匹配的元素作为上下文来执行一个函数。就是用each来遍历数组,来执行同一个方法
这个方法的实现最关键的是:call与apply的用法:call(apply)就是将函数的对象的从初始的上下文改为thisObj指向的对象,
就是说用thisObj来代替原来的对象来执行方法:call与apply的第一个参数为this指向的对象,而后面的参数都下传给函数的,
call传给函数的参数用逗号分隔而apply则为一个数组。
//1.callback.apply(object[name],args)
//2.callback.call(object[name],name,object[name])