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 相关文章推荐
textarea的value是html文件源代码,存成html文件的代码
Apr 20 Javascript
15个款优秀的 jQuery 图片特效插件推荐
Nov 21 Javascript
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
分享XmlHttpRequest调用Webservice的一点心得
Jul 20 Javascript
jQuery中ready事件用法实例
Jan 19 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
Oct 28 Javascript
基于jQuery实现左右图片轮播(原理通用)
Dec 24 Javascript
文件上传的几个示例分享【推荐】
Dec 16 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
Apr 25 Javascript
微信小程序实现的绘制table表格功能示例
Apr 26 Javascript
js实现点赞按钮功能的实例代码
Mar 06 Javascript
如何使用CocosCreator对象池
Apr 14 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
PHP 图片文件上传实现代码
2010/12/29 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
python文件操作之目录遍历实例分析
2015/05/20 Python
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
python实现简单flappy bird
2018/12/24 Python
学习python可以干什么
2019/02/26 Python
Python for循环与range函数的使用详解
2019/03/23 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Python调用飞书发送消息的示例
2020/11/10 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
天巡全球:Skyscanner Global
2017/06/20 全球购物
网上开店必备创业计划书
2014/01/26 职场文书
文案策划求职信
2014/04/14 职场文书
施工安全标语
2014/06/07 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
委托书范本格式
2019/04/18 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL