2013-03-01 2 views
0

Я реализую функцию .every на массиве. Я в старой среде JavaScript javascript, и функция ниже не сделала компилятор слишком счастливым (Rhino). Версия javascript - стандарт ECMA 262 JavaScript 1.5.очень обратная совместимость .every function

Однако код 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; 
    }; 
}; 
+0

'каждый'? Это то же самое, что и «каждый»? – PeeHaa

+0

Вы думаете о каждом в jQuery или _js? Я видел только. На массивах, которые изначально реализованы в js – Phil

+0

@PeeHaa Я считаю, что 'every' применяет обратный вызов для каждого элемента массива и возвращает' true', когда все элементы возвращают правдивое значение из обратного вызова. –

ответ

0

Функция работает с JS 1.5. У меня были другие проблемы, которые нарушили его, когда я исправил их. Все работало так, как должно.

Немного неловко, конечно, но я сделал несколько хороших исследований, которые помогли мне другими способами благодаря этому вопросу!

+1

Да, должно было сказать, что полиполк работает как ожидалось http://jsfiddle.net/hAHwB/ –

Смежные вопросы