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 相关文章推荐
Convert Seconds To Hours
Jun 16 Javascript
修改或扩展jQuery原生方法的代码实例
Jan 13 Javascript
JavaScript Array对象详解
Mar 01 Javascript
JavaScript制作简单的日历效果
Mar 10 Javascript
vue2.0多条件搜索组件使用详解
Mar 26 Javascript
vue.js实现价格格式化的方法
May 23 Javascript
vue-loader教程介绍
Jun 14 Javascript
vue单页应用中如何使用jquery的方法示例
Jul 27 jQuery
在Vue中使用Compass的方法
Mar 02 Javascript
Vue项目History模式404问题解决方法
Oct 31 Javascript
微信小程序制作表格的方法
Feb 14 Javascript
微信小程序实现图片上传
May 23 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
提问的智慧(2)
2006/10/09 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
javascript 函数速查表
2010/02/07 Javascript
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
2020/09/11 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
python读取oracle函数返回值
2016/07/18 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
Python-split()函数实例用法讲解
2020/12/18 Python
CSS3实现跳动的动画效果
2016/09/12 HTML / CSS
Ray-Ban雷朋美国官网:全球领先的太阳眼镜品牌
2016/07/20 全球购物
低碳环保口号
2014/06/12 职场文书
小学开学标语
2014/07/01 职场文书
婚礼新人答谢词
2015/01/04 职场文书
小石潭记导游词
2015/02/03 职场文书
生产车间管理制度
2015/08/04 职场文书
学校标语口号大全
2015/12/26 职场文书