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实现顶一下,踩一下效果
Jul 17 Javascript
js 获取计算后的样式写法及注意事项
Feb 25 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
Apr 01 Javascript
javascript获取select值的方法分析
Jul 02 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
Jun 01 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
Oct 21 Javascript
ES6新特性之解构、参数、模块和记号用法示例
Apr 01 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
Jan 03 Javascript
vue-scroller记录滚动位置的示例代码
Jan 17 Javascript
vue实现在线翻译功能
Sep 27 Javascript
js实现内置计时器
Dec 16 Javascript
js动态生成表格(节点操作)
Jan 12 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 清除网页病毒的方法
2008/12/05 PHP
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
PHP使用数组实现队列
2012/02/05 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
基于JavaScript实现定时跳转到指定页面
2016/01/01 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
木马的传播途径主要有哪些
2016/04/08 面试题
综合办公室个人的自我评价
2013/12/22 职场文书
数学系个人求职信范文
2014/01/30 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
高效课堂标语
2014/06/26 职场文书
博物馆观后感
2015/06/05 职场文书
Redis实现订单过期删除的方法步骤
2022/06/05 Redis