.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;
};
};