array.some()メソッド互換ie 8

2505 ワード

第5版では、ECMA-262規格にsomeが追加された.これにより、一部の実装環境ではサポートされない可能性があります.次のコードをスクリプトの先頭に挿入して、この問題を解決することができます.これにより、元のサポートされていない実装環境で使用できます.このアルゴリズムはECMA-262の第5版で指定されたアルゴリズムで、ObjectとTypeErrorが初期値を持つと仮定し、fun.CallはFunctionに等しい.prototype.call.---------------------
 
if (!Array.prototype.some)
{
  Array.prototype.some = function(fun /*, thisArg */)
  {
    'use strict';

    if (this === void 0 || this === null)
      throw new TypeError();

    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun !== 'function')
      throw new TypeError();

    var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
    for (var i = 0; i < len; i++)
    {
      if (i in t && fun.call(thisArg, t[i], i, t))
        return true;
    }

    return false;
  };
}
--------------------- 


 
転載先:https://www.cnblogs.com/qiu2841/p/10529288.html