`
zhangyaochun
  • 浏览: 2615275 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JavaScript1.6新特性系列之forEach(翻译)

阅读更多

JavaScript1.6新特性系列之 forEach 

 

总结:数组中的每一项多按照指定的方法执行。

 

Method of Array
Implemented in JavaScript 1.6
ECMAScript Edition ECMAScript 5th Edition

 

 

语法

 

array.forEach(callback[,thisArg]);

 

参数

 

  • callback  ---每一项指定的执行方法
  • thisArg   ---当callback方法执行时候的this对象


通用性

     forEach 是加入ECMA-262标准里面的,可能在别的标准里面没有它。下面的代码你可以放在你的脚本前面,它可以支持你使用forEach.


  1. if ( !Array.prototype.forEach ) {  
  2.   
  3.   Array.prototype.forEach = function( callback, thisArg ) {  
  4.   
  5.     var T, k;  
  6.   
  7.     if ( this == null ) {  
  8.       throw new TypeError( " this is null or not defined" );  
  9.     }  
  10.   
  11.     // 1. Let O be the result of calling ToObject passing the |this| value as the argument.  
  12.     var O = Object(this);  
  13.   
  14.     // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".  
  15.     // 3. Let len be ToUint32(lenValue).  
  16.     var len = O.length >>> 0; // Hack to convert O.length to a UInt32  
  17.   
  18.     // 4. If IsCallable(callback) is false, throw a TypeError exception.  
  19.     // See: http://es5.github.com/#x9.11  
  20.     if ( {}.toString.call(callback) != "[object Function]" ) {  
  21.       throw new TypeError( callback + " is not a function" );  
  22.     }  
  23.   
  24.     // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.  
  25.     if ( thisArg ) {  
  26.       T = thisArg;  
  27.     }  
  28.   
  29.     // 6. Let k be 0  
  30.     k = 0;  
  31.   
  32.     // 7. Repeat, while k < len  
  33.     while( k < len ) {  
  34.   
  35.       var kValue;  
  36.   
  37.       // a. Let Pk be ToString(k).  
  38.       //   This is implicit for LHS operands of the in operator  
  39.       // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.  
  40.       //   This step can be combined with c  
  41.       // c. If kPresent is true, then  
  42.       if ( k in O ) {  
  43.   
  44.         // i. Let kValue be the result of calling the Get internal method of O with argument Pk.  
  45.         kValue = O[ k ];  
  46.   
  47.         // ii. Call the Call internal method of callback with T as the this value and  
  48.         // argument list containing kValue, k, and O.  
  49.         callback.call( T, kValue, k, O );  
  50.       }  
  51.       // d. Increase k by 1.  
  52.       k++;  
  53.     }  
  54.     // 8. return undefined  
  55.   };  
  56. }  


 
 
举例

[10,20,30,40].forEach(function(elem,index){
   console.log('index='+index+"&elem="+elem);
});

//输出
index=0&elem=10
index=1&elem=20
index=2&elem=30
index=3&elem=40
 
浏览器兼容性



 
  • 大小: 163 KB
  • 大小: 16.4 KB
1
0
分享到:
评论

相关推荐

    JavaScript1.6数组新特性介绍以及JQuery的几个工具方法

    JavaScript 1.6 引入了几个新的Array 方法,具体的介绍见:New in JavaScript 1.6 。这些方法已经被写进了ECMA262 V5。现代浏览器(IE9/Firefox/Safari/Chrome/Opera)都已经支持,但IE6/7/8不支持。jquery的工具...

    jdk1.6_64-bit

    总结来说,JDK 1.6_64-bit是一个在特定历史时期对Java和Android开发至关重要的工具包,它包含了一系列编程工具和库,支持了当时的许多关键特性。然而,随着时间的发展,为了保持代码的现代性和安全性,应考虑升级到...

    DHTML+CSS+JS+JDK1.6 中文手册

    在这个版本中,引入了一些新特性,例如增强的for循环(foreach)、静态导入、泛型的改进、枚举的改进以及NIO.2(非阻塞I/O)等,这些都提高了Java程序员的生产力和代码质量。 **JScript**是微软对ECMAScript的实现...

    jdk 1.6 API 中文版

    ### JDK 1.6新特性 1. **增强的for循环(foreach)**:引入了增强的for循环语法,简化了遍历集合的操作。 2. **泛型**:允许在类型声明中使用类型参数,提高了代码的类型安全性。 3. **静态导入**:允许静态成员...

    jdk1.6Api中文版

    **JDK 1.6主要特性** 1. **泛型(Generics)**:JDK 1.6引入了泛型,这是一种编译时类型安全的机制,允许在类、接口和集合中使用参数化类型,增强了代码的重用性和可读性。 2. **增强的for循环(Enhanced For Loop...

    API文档jdk1.5及1.6 中英文文档

    本资源包含针对Java开发者的JDK 1.5和1.6版本的API文档,以及JavaScript 5的文档,同时还有关于HTML的基础信息。以下是对这些文档的详细解析: **JDK 1.5 API中文版**: 这个`.chm`文件是Java Development Kit 1.5...

    JDK1.6 API帮助文档

    JDK 1.6引入了一些重要的新特性,例如: 1. **改进的泛型**: 泛型的使用更加灵活,可以用于数组、匿名类和异常声明。 2. **增强的for循环(Enhanced for Loop)**: 也称为foreach循环,简化了遍历集合和数组的操作...

    Dojo 1.9 modules

    **注意**:`forEach`方法与JavaScript 1.6中的`Array.forEach()`有一个显著的不同之处,那就是它会遍历稀疏数组,并将稀疏数组中的空位传递给回调函数。而JavaScript 1.6的`Array.forEach()`则会跳过稀疏数组中的...

    jdk_API_1.6_chm中文文档

    JDK 1.6相对于之前的版本,引入了一些重要的新特性和增强,如: 1. **泛型**: 泛型增强了类型安全,允许在编译时检查集合中的元素类型,避免了类型转换异常。 2. **枚举**: 作为常量的容器,枚举类可以拥有方法和...

    dojo1.6关于DOM相关操作的官方介绍

    在Dojo 1.6版本中,DOM操作是其核心特性之一,它允许开发者高效地创建、修改和管理HTML元素。以下是对Dojo 1.6 DOM相关操作的详细说明: 1. **dojo.query**: 这是Dojo提供的一个强大选择器,类似于jQuery的`$`函数...

    判断浏览器的javascript版本的代码

    随着技术的发展,JavaScript经历了多个版本的更新,每个版本都引入了新的特性和功能。在给定的代码中,主要涉及到的是通过检测浏览器对特定JavaScript方法的支持来判断其JavaScript引擎的版本。 首先,让我们分析...

    张孝祥培训教程文档和源码

    【张孝祥培训教程文档和源码】是一个针对Java初学者和进阶者的教程资源,主要涵盖传智播客公开课中的教学内容,特别是围绕JDK 1.6版本的新特性和基础加强部分。这个压缩包包含两个子文件,分别是"Java基础加强代码....

    JavaScript小技巧

    在日常开发过程中,JavaScript作为前端开发的核心语言之一,其灵活多变的特性让开发者能够实现各种复杂的功能。对于新手乃至中级开发者而言,掌握一些实用的小技巧可以极大提高编码效率与代码质量。本文将详细介绍几...

    Underscore源码解析[归类].pdf

    此外,如果宿主环境支持JavaScript 1.6引入的新方法(如`forEach`、`map`和`reduce`),Underscore会优先使用这些原生方法,否则使用自己实现的版本。 `_`函数是Underscore的主要接口,它接受一个对象`obj`并返回一...

    Underscore.js 1.3.3 中文注释翻译说明

    此外,如果宿主环境支持JavaScript 1.6的新特性,如`forEach`、`map`、`reduce`等,Underscore会优先使用它们,否则将自行实现。 Underscore的核心是其对象式的调用方式,通过`_`函数接收一个对象并返回一个包裹器...

    prototype_1_6教程

    - **新特性**:加强了对JavaScript 1.6和WHATWG 1.0标准的支持,提高了兼容性和稳定性。 - **应用场景**:适用于需要遵循最新Web标准的应用场景,确保应用在不同浏览器中的表现一致性。 #### 三、实用方法 ##### 1...

    JDK1.8API中文版

    1. **Lambda表达式**:这是JDK 1.8中最显著的新特性之一,它提供了一种简洁的语法来表示匿名函数,使得代码更加简洁、可读性更强。Lambda表达式可以作为参数传递,也可以作为方法的返回值,极大地简化了对集合的处理...

Global site tag (gtag.js) - Google Analytics