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 相关文章推荐
50款非常棒的 jQuery 插件分享
Mar 29 Javascript
jQuery.fn和jQuery.prototype区别介绍
Oct 05 Javascript
javascript中文本框中输入法切换的问题
Dec 10 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
Jul 28 Javascript
Javascript实现倒计时(防页面刷新)实例
Dec 13 Javascript
Angularjs实现搜索关键字高亮显示效果
Jan 17 Javascript
浅析JavaScript中var that=this
Feb 17 Javascript
原生JS实现多个小球碰撞反弹效果示例
Jan 31 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
Jul 25 Javascript
layui弹出框Tab选项卡的示例代码
Sep 04 Javascript
Postman动态获取返回值过程详解
Jun 30 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
删除无限级目录与文件代码共享
2006/07/12 PHP
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
php防止sql注入代码实例
2013/12/18 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
Python中给List添加元素的4种方法分享
2014/11/28 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
Python3爬虫关于识别检验滑动验证码的实例
2020/07/30 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
班组长的岗位职责
2013/12/09 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书
学生手册家长评语
2014/02/10 职场文书
迎元旦广播稿
2014/02/22 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
详解Vue的options
2021/05/15 Vue.js
浅谈Python中对象是如何被调用的
2022/04/06 Python
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers