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如何判断表格同一列不同行input数据是否重复
May 14 Javascript
Node.js实现简单聊天服务器
Jun 20 Javascript
jQuery表单验证功能实例
Aug 28 Javascript
js实现的奥运倒计时时钟效果代码
Dec 09 Javascript
Jquery easyui开启行编辑模式增删改操作
Jan 14 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
Aug 03 Javascript
JavaScript数组操作函数汇总
Aug 05 Javascript
jquery广告无缝轮播实例
Jan 05 Javascript
angular实现form验证实例代码
Jan 17 Javascript
Express结合Webpack的全栈自动刷新
May 23 Javascript
JavaScript使用面向对象实现的拖拽功能详解
Jun 12 Javascript
微信小程序实现电子签名并导出图片
May 27 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
追求程序速度,而不是编程的速度
2008/04/23 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
2014/08/12 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
python抓取网页图片并放到指定文件夹
2014/04/24 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
python实现将文本转换成语音的方法
2015/05/28 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
解决Keras 自定义层时遇到版本的问题
2020/06/16 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
意大利辅助药品、药物和补品在线销售:FarmaEurope
2020/04/29 全球购物
捐款倡议书范文
2014/02/02 职场文书
周年庆促销方案
2014/03/15 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
500字小学生检讨书
2015/02/19 职场文书
正规欠条模板
2015/07/03 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Spring实现内置监听器
2021/07/09 Java/Android