IE8兼容性解决forEach()、addEvntListener

原创 Laughing  2017-06-30 21:34  阅读 64 次 评论 0 条


forEach 是在第五版本里被添加到 ECMA-262 标准的;这样它可能在标准的其他实现中不存在,你可以在你调用 forEach 之前 插入下面的代码,在本地不支持的情况下使用 forEach()。该算法是 ECMA-262 第5版中指定的算法。算法假定Object和TypeError拥有它们的初始值。callback.call 等价于Function.prototype.call()。

  1. if ( !Array.prototype.forEach ) {  
  2.   Array.prototype.forEach = function forEach( callback, thisArg ) {  
  3.     var T, k;  
  4.     if ( this == null ) {  
  5.       throw new TypeError( "this is null or not defined" );  
  6.     }  
  7.     var O = Object(this);  
  8.     var len = O.length >>> 0;   
  9.     if ( typeof callback !== "function" ) {  
  10.       throw new TypeError( callback + " is not a function" );  
  11.     }  
  12.     if ( arguments.length > 1 ) {  
  13.       T = thisArg;  
  14.     }  
  15.     k = 0;  
  16.     while( k < len ) {  
  17.       var kValue;  
  18.       if ( k in O ) {  
  19.         kValue = O[ k ];  
  20.         callback.call( T, kValue, k, O );  
  21.       }  
  22.       k++;  
  23.     }  
  24.   };  
  25. }  
本文地址:https://www.lisen.me/ie8-compatibility-solve-the-foreach-addevntlistener.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情