0

.every関数を配列に実装しています。私は古いJavaScriptエンジン環境にいますが、以下の関数はコンパイラーをあまり満足させませんでした(Rhino)。javascriptのバージョンは、ECMA262標準のJavaScript1.5です。

ただし、Mozillaが提供する、すべての下位互換性を実現するコードエンジンでは機能しないようです。そのため、より簡単で機能性の低いバージョンを実装しようとしています。したがって、必要な調整を行うためにスクリプトがどのように機能するかを理解したいと思います。

私の質問; JS 1.5で動作することが保証されている以下の非常に複雑でないバージョンを実装するにはどうすればよいですか?

if (!Array.prototype.every)
{
    Array.prototype.every = function(fun /*, thisp */)
    {
        "use strict";

         if (this == null)
             throw new TypeError();

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

         var thisp = arguments[1];
         for (var i = 0; i < len; i++)
         {
             if (i in t && !fun.call(thisp, t[i], i, t))
             return false;
         }

         return true;
    };
};
4

1 に答える 1

0

この関数はJS1.5で動作します。私がそれらを修正したとき、私はそれを壊した他の問題を抱えていました。

もちろん少し恥ずかしいですが、私はこの質問に感謝する他の方法で私を助けたいくつかの良い研究をしました!

于 2013-03-01T12:40:43.507 に答える