jquery each()源代码


Posted in Javascript onFebruary 14, 2011
// args is for internal usage only 
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 ( var value = object[0]; 
i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {} 
} 
} 
return object; 
},

分析: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 ] )
Javascript 相关文章推荐
用Javascript读取中文COOKIE的解决办法
Feb 15 Javascript
在UpdatePanel内jquery easyui效果失效的解决方法
Apr 11 Javascript
简单实用的反馈表单无刷新提交带验证
Nov 15 Javascript
js实现图片拖动改变顺序附图
May 13 Javascript
jQuery实现DIV层收缩展开的方法
Feb 27 Javascript
JavaScript操作Oracle数据库示例
Mar 06 Javascript
Vue.js每天必学之方法与事件处理器
Sep 06 Javascript
jQuery简单实现遍历单选框的方法
Mar 06 Javascript
全面解析vue中的数据双向绑定
May 10 Javascript
微信小程序中使用javascript 回调函数
May 11 Javascript
vue中使用v-for时为什么不能用index作为key
Apr 04 Javascript
原生js实现随机点名
Jul 05 Javascript
jquery trim() 功能源代码
Feb 14 #Javascript
jquery uaMatch源代码
Feb 14 #Javascript
AJAX 网页保留浏览器前进后退等功能
Feb 12 #Javascript
一些主流JS框架中DOMReady事件的实现小结
Feb 12 #Javascript
javascript中删除指定数组中指定的元素的代码
Feb 12 #Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
Feb 12 #Javascript
编写可维护面向对象的JavaScript代码[翻译]
Feb 12 #Javascript
You might like
Zerg剧情介绍
2020/03/14 星际争霸
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
php计算整个目录大小的方法
2015/06/01 PHP
基于jquery的表格排序
2010/09/11 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
vue项目前端埋点的实现
2019/03/06 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
python类定义的讲解
2013/11/01 Python
python进程管理工具supervisor使用实例
2014/09/17 Python
python hashlib加密实现代码
2019/10/17 Python
python 调用API接口 获取和解析 Json数据
2020/09/28 Python
Python 实现进度条的六种方式
2021/01/06 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
普通员工辞职信
2014/01/17 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
家长通知书教师评语
2014/04/17 职场文书
个人安全承诺书
2014/05/22 职场文书
计划生育汇报材料
2014/12/26 职场文书
教代会开幕词
2015/01/28 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
亲情作文之母爱
2019/09/25 职场文书