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的cookie插件实现保存用户登陆信息
Apr 15 Javascript
Javascript实现多彩雪花从天降散落效果的方法
Feb 02 Javascript
javascript每日必学之多态
Feb 23 Javascript
JavaScript学习笔记之数组随机排序
Mar 23 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
Dec 13 Javascript
JavaScript中String对象的方法介绍
Jan 04 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
Jul 03 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
JavaScript 判断对象中是否有某属性的常用方法
Jun 14 Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 Javascript
使用vant的地域控件追加全部选项
Nov 03 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/12/20 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
JsRender for index循环索引用法详解
2014/10/31 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
jquery实现动态操作select选中
2015/02/11 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python中的rfind()方法使用详解
2015/05/19 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python中new方法的详解
2019/01/15 Python
在Python中使用Neo4j的方法
2019/03/14 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
毕业生就业推荐信范文
2013/12/01 职场文书
中专生自我鉴定
2013/12/17 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
学术会议主持词
2014/03/17 职场文书
导游个人求职信范文
2014/03/23 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
2014年采购员工作总结
2014/11/18 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书