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 相关文章推荐
jQuery插件 selectToSelect使用方法
Oct 02 Javascript
XML文件转化成NSData对象的方法
Aug 12 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
JS实现简单的右下角弹出提示窗口完整实例
Jun 21 Javascript
JQuery 设置checkbox值二次无效的解决方法
Jul 22 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
Jan 22 Javascript
基于bootstrap实现多个下拉框同时搜索功能
Jul 19 Javascript
JS中Swiper的使用和轮播图效果
Aug 11 Javascript
JS字符串去除连续或全部重复字符的实例
Mar 08 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
Sep 18 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
js实现简单页面全屏
Sep 17 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
使用TinyButStrong模板引擎来做WEB开发
2007/03/16 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
岗位职责定义及内容
2013/11/08 职场文书
公司财务自我评价分享
2013/12/17 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript