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中void(0)的具体含义解释
Feb 27 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
Sep 19 Javascript
JS 日期比较大小的简单实例
Jan 13 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
简单谈谈json跨域
Mar 13 Javascript
全面了解构造函数继承关键apply call
Jul 26 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 Javascript
基于webpack 实用配置方法总结
Sep 28 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
Feb 21 Javascript
详解基于Vue的支持数据双向绑定的select组件
Sep 02 Javascript
JavaScript实现图片合成下载的示例
Nov 19 Javascript
Ajax实现三级联动效果
Oct 05 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生成二维码的几种方式整理及使用实例
2013/06/03 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
用python编写第一个IDA插件的实例
2018/05/29 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
python实现代码统计器
2019/09/19 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
毕业生求职简历的自我评价
2013/10/07 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
采购求职信
2014/03/17 职场文书
行政人事岗位职责
2014/03/17 职场文书
应届大专生求职信
2014/06/26 职场文书
初中教师个人总结
2015/02/10 职场文书
教师节感想
2015/08/11 职场文书
教师素质教育心得体会
2016/01/19 职场文书
一文搞懂Python Sklearn库使用
2021/08/23 Python
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
详解Golang如何优雅的终止一个服务
2022/03/21 Golang