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设置IFRAME的SRC值的代码
Nov 30 Javascript
javascript中数组的sort()方法的使用介绍
Dec 18 Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 Javascript
javascript学习笔记(六)数据类型和JSON格式
Oct 08 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
jquery跟随屏幕滚动效果的实现代码
Apr 13 Javascript
JavaScript中的await/async的作用和用法
Oct 31 Javascript
angular-ui-sortable实现可拖拽排序列表
Dec 28 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 Javascript
Angularjs添加排序查询功能的实例代码
Oct 24 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
May 05 Javascript
vue 中url 链接左边的小图标更改问题
Dec 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
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
php开发文档 会员收费1期
2012/08/14 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
PHP设计模式之简单投诉页面实例
2016/02/24 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python的多态性实例分析
2015/07/07 Python
python中web框架的自定义创建
2019/09/08 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
服务行业个人求职的自我评价
2013/12/12 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
运动会广播稿100字
2014/09/14 职场文书
给医院的感谢信
2015/01/21 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
公司员工手册范本
2015/05/14 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书