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 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
May 23 Javascript
JS打印gridview实现原理及代码
Feb 05 Javascript
node.js中的events.emitter.once方法使用说明
Dec 10 Javascript
js拆分字符串并将分割的数据放到数组中的方法
May 06 Javascript
简介JavaScript中的sub()方法的使用
Jun 08 Javascript
最新最热最实用的15个jQuery插件汇总
Jul 05 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
JavaScript异步加载问题总结
Feb 17 Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 Javascript
使用async await 封装 axios的方法
Jul 09 Javascript
微信小程序自定义模态弹窗组件详解
Dec 24 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
极典R601SW收音机
2021/03/02 无线电
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
php目录拷贝实现方法
2015/07/10 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
js调用css属性写法
2013/09/21 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
Python中设置变量访问权限的方法
2015/04/27 Python
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python实现简单的文件传输与MySQL备份的脚本分享
2016/01/03 Python
window下eclipse安装python插件教程
2017/04/24 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
python绘制漏斗图步骤详解
2019/03/04 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
Django websocket原理及功能实现代码
2020/11/14 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
设计顾问服务计划书
2014/05/04 职场文书
厂区绿化方案
2014/05/08 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
人生遥控器观后感
2015/06/11 职场文书
会议主持词结束语
2015/07/03 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
golang 比较浮点数的大小方式
2021/05/02 Golang