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 相关文章推荐
网上抓的一个特效
May 11 Javascript
纯JS实现的批量图片预览加载功能
Aug 14 Javascript
基于jquery的$.ajax async使用
Oct 19 Javascript
js有关元素内容操作小结
Dec 20 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
Mar 25 Javascript
jQuery中:visible选择器用法实例
Dec 30 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
Mar 22 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
May 19 Javascript
jQuery实现的placeholder效果完整实例
Aug 02 Javascript
微信小程序 仿猫眼实现实例代码
Mar 14 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
Jun 26 Javascript
Vue父子之间值传递的实例教程
Jul 02 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
一个用php3编写的简单计数器
2006/10/09 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
php生成curl命令行的方法
2015/12/14 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
Django stark组件使用及原理详解
2019/08/22 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
Python中Yield的基本用法
2020/10/18 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
局域网标准
2016/09/10 面试题
客服部班长工作责任制
2014/02/25 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
抽奖活动主持词
2014/03/31 职场文书
住宅使用说明书
2014/05/09 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
世界遗产的导游词
2015/02/13 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis