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 相关文章推荐
javascript 获取网页标题代码实例
Jan 22 Javascript
jquery移除、绑定、触发元素事件使用示例详解
Apr 10 Javascript
触屏中的JavaScript事件分析
Feb 06 Javascript
浅谈jQuery中setInterval()方法
Jul 07 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
Aug 15 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
AngularJS 中ui-view传参的实例详解
Aug 25 Javascript
浅谈Vue数据绑定的原理
Jan 08 Javascript
解决VUEX兼容IE上的报错问题
Mar 01 Javascript
详解mpvue小程序中怎么引入iconfont字体图标
Oct 01 Javascript
细述Javascript的加法运算符的具体使用
Oct 18 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 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 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
两个Javascript小tip资料
2010/11/23 Javascript
jQuery中需要注意的细节问题小结
2011/12/06 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
js闭包的用途详解
2014/11/09 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
jquery实现简单的无缝滚动
2015/04/15 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
Python批量转换文件编码格式
2015/05/17 Python
python实现关键词提取的示例讲解
2018/04/28 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python3.8下载及安装步骤详解
2020/01/15 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Python如何在bool函数中取值
2020/09/21 Python
linux面试题参考答案(4)
2014/09/21 面试题
计算机应用毕业生自荐信
2013/10/23 职场文书
销售高级职员求职信
2013/10/29 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
酒店辞职书范文
2015/02/26 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
高中家长意见怎么写
2015/06/03 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis