数组的实例上都有一个叫做 forEach 的方法,这个方法定义在 Array.prototype 上,所以数组的所有实例都可以使用 forEach 这个方法。 forEach 方法的语法结构如下:  

 var ary = [1, 2, 3, 4, 5, 5, 6, 8, 9];
ary.forEach(function(index, item) {
// 这个函数一共会执行 ary.length 次
// index 当前数组的索引
// item 当前索引对应的哪项
// thisArg 当函数执行的时候,函数里面的 this 关键字
}, thisArg);

  forEach 方法的兼容程度是 IE9+,对于 IE8 浏览器,我们需要做兼容性处理,所以采用惰性函数的思想,对 forEach 方法做一个简单的处理,代码如下:

Array.prototype.forEach = (function() {
  //当对于支持 forEach 方法的浏览器,使用数组本身自带的方法
if (this.forEach) {
return function(fn, thisArg) {
thisArg = thisArg || window;
fn.call(thisArg, index, item);
}
}
  //对于不支持 forEach 的浏览器,用自定义的方法重写数组类原型上的 forEach 方法
return function(fn, thisArg) {
for (var i = 0, len = this.lenght; i < len; i++) {
thisArg = thisArg || window;
fn.call(thisArg, index, item);
}
}
})();

用过 jQuery 的朋友会发现,jQuery 中有 each 这个方法,一个是定义在 $.each 上,另一个是定义在 jQuery 的实例上。

 关于 $.each 这个方法,它的使用模式如下:

$.each(需要遍历的对象/需要被遍历的数组,回调函数[可选的,参数是 index, item]);

回调函数中的 item 就是当前被遍历到的项,如果传递进去的对象是 jquery 对象,item 是 dom 对象,而且函数中的 this 关键字指向这个 dom 对象;

回调函数中如果传递进去的是数组,item 就是当前数组中的 index 对应的当前项,this 关键字指向当前项;

函数执行的返回结果就是当前操作的参数。

我们可以参见实例代码:

  实例代码1:$.each 操作数组

//操作数组
var ary = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var res =$.each(ary, function(index, item) {
// do somthing
console.log(index, item);
});
console.log(res ===ary);

实例2: $.each 操作jQuery 对象

// 操作 jquery 对象
$.each($('p'),function(index,item) {
console.log(this==item,index,item);
})

挂载 $ 这个美元符号上的方法是 jQuery 上的工具方法, 通过 $(selector) 生成的 jQuery 对象上也有一个 each 方法,方法的使用参见 jquery api

$('p').each(function(index, item) {
console.log(index + 1 + ":" + item.className);
});

但是好像这个方法并没有太大的实际用处的样子。

数组中的each 和 jquery 中的 each的更多相关文章

  1. HTML5中的data-*属性和jQuery中的.data()方法使用

    原文地址链接:http://blog.csdn.net/fly_zxy/article/details/50687691: HTML5中的data-*属性 我们往往会根据需要在HTML标记上添加自定义 ...

  2. js中window.onload 与 jquery中$(document.ready()) 測试

    js中window.onload 与 jquery中$(document.ready())差别,验证代码例如以下(调换js代码和Jquer代码书写顺序測试.执行结果一样.因此与代码书写位置没关系): ...

  3. css中:not()选择器和jQuery中.not()方法

    因为老是将这两个的not方法弄混,所以写一下备忘. css中:not()选择器用法 :not 伪类选择器可以筛选不符合表达式的元素,:not(selector) 其中的selector为css选择器 ...

  4. 数组的foreach方法和jQuery中的each方法

    /* * 数组的forEach方法: * 1.返回给回调的参数先是值,然后是下标 * 2.回调函数执行时内部的this指向window * */ /*var arr = [1,2,3,4,5]; ar ...

  5. JS中的onload与jQuery中的ready差别

    jQuery的运行机制(onload与ready的差别) 结论得出前自行測试: 为了測试是否真如所说的那样,所以在页面插入了20000张照片,照片数量少得不出什么结论,所以改用console.log( ...

  6. js中的style与jQuery中的css

    使用jQuery选择器时,可以直接使用css函数(注意不能使用$("p")[1].css()) $("p").css("background-colo ...

  7. JQuery中的对象和事件

    一:JQuery 对象和 Dom 对象 在使用 JQuery 过程中,我们一般(也是绝大多数情况下,除非我们使用了第二个框架)只有两类对象,即:JQuery 对象和 Dom 对象.Dom 对象指的是普 ...

  8. jQuery中attr()与prop()区别介绍

    .attr() : 获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配元素的一个或多个属性. •.attr( attributeName ) •.attr( attributeName ) ...

  9. jquery中链式调用原理

    (1).链式调用 $("#mybtn").css("width","100px") .css("height",&quo ...

随机推荐

  1. 【Apache】ab工具

    格式:ab  [options] [http://]hostname[:port]/path -n requests Number of requests to perform //在测试会话中所执行 ...

  2. windows下面安装redis

    一.下载windows版本的Redis 链接:https://pan.baidu.com/s/1i6X2klv 密码:j4pi 二.安装Redis 这里下载的是Redis-x64-3.2.100版本, ...

  3. wpf下使用NotifyIcon

    以前在winForm下使用过NotifyIcon,到wpf找不到了,在wpf下还是直接用WinForm里的那个NotifyIcon实现最小到系统托盘 定义一个NotifyIcon成员 : Notify ...

  4. iOS 监听键盘高度,输入框上升

    //设置输入框 ---<因为输入框用了get方法,所以第一次调用输入框要用self 调用>: self.textlab.frame=CGRectMake(, , , ); _textlab ...

  5. 【bzoj4709】[Jsoi2011]柠檬 斜率优化

    题目描述 给你一个长度为 $n$ 的序列,将其分成若干段,每段选择一个数,获得 $这个数\times 它在这段出现次数的平方$ 的价值.求最大总价值. $n\le 10^5$ . 输入 第 1 行:一 ...

  6. TCP/IP四层协议模型与ISO七层模型

    TCP/IP四层协议模型与ISO七层模型 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他 ...

  7. Wifi密码破解实战

    原文链接地址:http://www.freebuf.com/articles/wireless/127261.html https://www.baidu.com/?tn=98012088_4_dg& ...

  8. linux内核分析 第三周 构造一个简单的Linux系统MenuOS

    一.计算机的三个法宝 存储程序计算机,函数调用堆栈,中断二.操作系统的两把剑:1.中断上下文的切换,保存现场和恢复现场2.进程上下文的切换. 三.linux内核源代码的分析: ·arch/目录保存支持 ...

  9. miya--图片上传--搭建分布式文件服务器(FastDFS+Nginx)

    资料获取(FastDFS+Nginx): 链接:https://pan.baidu.com/s/1kUI5WH5 密码:kzfd 安装rz,sz功能: yum install lrzsz 主攻: 利用 ...

  10. oracle 远程登录sqlplus TNS:无监听

    1.将localhost 改成 计算机名 best-PC,或者ip地址 .  我修改成计算机名,因为经常在无线网络和有限网络之间切换 SID_LIST_LISTENER =  (SID_LIST =  ...