2013-03-01 69 views
0

我在數組上實現了.every功能。我在一箇舊的JavaScript引擎環境中,下面的函數並沒有讓編譯器太高興(Rhino)。 JavaScript的版本是ECMA 262標準JavaScript 1.5。非常向後兼容。每個功能

但是,Mozilla提供的代碼使.every向後兼容似乎不能在引擎中工作,所以我試圖實現一個更簡單,功能更少的版本。因此,我想了解腳本如何工作以進行必要的調整。

我的問題;我怎麼能實現一個非常複雜的版本,以保證與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; 
    }; 
}; 
+0

'every'?這與「each」相同嗎? – PeeHaa 2013-03-01 12:30:07

+0

你在想每個jQuery或_js嗎?我只見過在js – Phil 2013-03-01 12:31:04

+0

@PeeHaa原生實現的數組中的每一個數組我相信'every'會對數組中的每個元素應用一個回調函數,並在所有元素從回調函數返回一個真值時返回'true'。 – 2013-03-01 12:31:25

回答

0

該功能與JS 1.5一起使用。當我修復這些問題時,我遇到了其他問題,這些問題都應該如此。

當然有點尷尬,但我做了一些很好的研究,幫助我以其他方式感謝這個問題!

+1

是的,它即將說polyfill按預期工作http://jsfiddle.net/hAHwB/ – 2013-03-01 12:44:12