jQuery源码学习笔记(10)
来源:互联网 发布:qq炫舞卡八音软件 编辑:程序博客网 时间:2024/06/06 00:45
jQuery的each迭代器
jQuery的each方法从使用上就要分2种情况:
☑ $.each()函数☑ $(selector).each()
$.each()函数可用于迭代任何集合,无论是“名/值”对象(JavaScript对象)或数组。在迭代数组的情况下,回调函数每次传递一个数组索引和相应的数组值作为参数。(该值也可以通过访问this关键字得到,但是JavaScript始终将this值作为一个Object,即使它是一个简单的字符串或数字值。)该方法返回其第一个参数,这是迭代的对象。
jQuery的实例方法最终也是调用的静态方法,我们在之前就解释过jQuery的实例与原型方法共享的设计。
其中each的实例方法如下:
可见内部是直接调用的静态方法:
each: function(callback, args) { return jQuery.each(this, callback, args);},
jQuery.each静态方法:
each: function(obj, callback, args) { var value, i = 0, length = obj.length, isArray = isArraylike(obj); if (args) { if (isArray) { for (; i < length; i++) { value = callback.apply(obj[i], args); if (value === false) { break; } } } else { for (i in obj) { value = callback.apply(obj[i], args); if (value === false) { break; } } }
实现原理几乎一致,只是增加了对于参数的判断。对象用for in遍历,数组用for遍历。
jQuery可以是多个合集数组DOM,所以在处理的时候经常就针对每一个DOM都要单独处理,所以一般都需要调用this.each 方法,如下代码:
dequeue: function( type ) { return this.each(function() { jQuery.dequeue( this, type ); }); },
迭代器除了单纯的遍历,在jQuery内部的运用最多的就是接口的抽象合并,相同功能的代码功能合并处理:
例如一:
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase();});
例如二:
jQuery.each({ mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout"}, function( orig, fix ) { //处理的代码});
可以看出上面代码方法,针对相同的功能,节约了大量的代码空间。
阅读全文
0 0
- jQuery源码学习笔记(10)
- jQuery源码研究学习笔记(二)
- jQuery源码学习笔记(02)
- jQuery源码学习笔记(01)
- jQuery源码学习笔记(03)
- jQuery源码学习笔记(04)
- jQuery源码学习笔记(05)
- jQuery源码学习笔记(06)
- jQuery源码学习笔记(07)
- jQuery源码学习笔记(08)
- jQuery源码学习笔记(09)
- jQuery源码研究分析学习笔记-jQuery.buildFragment()(六)
- jQuery源码分析研究学习笔记-jQuery.clean()(七)
- jQuery源码学习笔记一
- jQuery源码学习笔记(1)
- jquery源码学习笔记-01
- jQuery源码剖析学习笔记
- jquery源码学习笔记随笔
- pyqt下.ui文件转换为对应.py文件的知识整理
- QT的安装和实现简单动画,有源码
- 关于MySQL数据库调优的几点心得
- 设计模式学习—空对象模式(Null Object Design Pattern)
- Android自定义控件(特效二) 点击屏幕,根据所点击的位置绘制桃心
- jQuery源码学习笔记(10)
- rn笔记:(Genymotion)启动rn时,node没启动成功,导致报错unable to load script from assets'index.android.bundle'
- cocos creator 学习(五)
- android中关于点击屏幕,实现破碎的效果的实现
- Python基础之Windows下Python3.x环境搭建
- 文章标题 HDU 2222 : Keywords Search (AC自动机模板)
- Js apply()使用详解
- Kubernets演进
- Example 6.7 An Access-Control Queuing Task