Javascript: array.forEach() w IE

Od kilku miesięcy używam następującej konstrukcji, gdy potrzebują stworzyć jakąś listę elementów formularza:

var hours = new Array();
/** tutaj wczytywanie elementów z Smarty **/

/** tworzenie input-ów **/
function loadHours(thisHour, i, array)
{
    /** tworzenie input-a dla danego elementu **/
}

hours.forEach(loadHours);

I zawsze mi to działało…
Dopóki ktoś nie uruchomił tego w IE. Okazało się, że tam standardowo nie ma zaimplementowanej obslugi Array.forEach(), bardzo ułatwiającej życie. Dlatego przed wszystkimi operacjami JS należy dodać, taki oto fragment:

if (!Array.prototype.forEach)
{
    Array.prototype.forEach = function (closure)
    {
        var context = arguments[1] || null;
        for (var i = 0; i < this.length; i ++)
        {
            arguments[0].call(context, this[i], i, this);
        }
    }
}

i po problemie w IE 🙂