zoukankan      html  css  js  c++  java
  • 让forEach兼容IE8

    今天在做项目中遇到一个问题,就是forEach 不兼容IE8;后经查阅资料完美解决问题。

    资料:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach?v=example

     1 //官网查询的兼容代码段
     2 // Production steps of ECMA-262, Edition 5, 15.4.4.18
     3 // Reference: http://es5.github.io/#x15.4.4.18
     4 if (!Array.prototype.forEach) {
     5 
     6   Array.prototype.forEach = function(callback/*, thisArg*/) {
     7 
     8     var T, k;
     9 
    10     if (this == null) {
    11       throw new TypeError('this is null or not defined');
    12     }
    13 
    14     // 1. Let O be the result of calling toObject() passing the
    15     // |this| value as the argument.
    16     var O = Object(this);
    17 
    18     // 2. Let lenValue be the result of calling the Get() internal
    19     // method of O with the argument "length".
    20     // 3. Let len be toUint32(lenValue).
    21     var len = O.length >>> 0;
    22 
    23     // 4. If isCallable(callback) is false, throw a TypeError exception. 
    24     // See: http://es5.github.com/#x9.11
    25     if (typeof callback !== 'function') {
    26       throw new TypeError(callback + ' is not a function');
    27     }
    28 
    29     // 5. If thisArg was supplied, let T be thisArg; else let
    30     // T be undefined.
    31     if (arguments.length > 1) {
    32       T = arguments[1];
    33     }
    34 
    35     // 6. Let k be 0.
    36     k = 0;
    37 
    38     // 7. Repeat while k < len.
    39     while (k < len) {
    40 
    41       var kValue;
    42 
    43       // a. Let Pk be ToString(k).
    44       //    This is implicit for LHS operands of the in operator.
    45       // b. Let kPresent be the result of calling the HasProperty
    46       //    internal method of O with argument Pk.
    47       //    This step can be combined with c.
    48       // c. If kPresent is true, then
    49       if (k in O) {
    50 
    51         // i. Let kValue be the result of calling the Get internal
    52         // method of O with argument Pk.
    53         kValue = O[k];
    54 
    55         // ii. Call the Call internal method of callback with T as
    56         // the this value and argument list containing kValue, k, and O.
    57         callback.call(T, kValue, k, O);
    58       }
    59       // d. Increase k by 1.
    60       k++;
    61     }
    62     // 8. return undefined.
    63   };
    64 }
    65 //此处放兼容代码
    66 /*兼容代码*/
    67 //resultArr数组
    68 resultArr.forEach(function (iterm, index) {
    69       //内容                 
    70 })
    什么叫见过大世面?就是能享受最好的,能承受最坏的。
  • 相关阅读:
    各种blog尝试后,发现wordpress适用起来最方便
    索引器(C# 编程指南)
    vue3 父子组件之间的传值
    vue3 + vite + ts 搭建项目
    vue3中使用全局变量
    用JSONKit库解析json文件
    程序内部让用户直接上appstore评价游戏的链接地址以及跳转方法
    常见错误:Apple MachO Linker Error
    常见错误:多线程界面元素显示错误
    常见错误:Undefined symbols for architecture i386
  • 原文地址:https://www.cnblogs.com/jingaier/p/7064210.html
Copyright © 2011-2022 走看看