forEach

JavaScriptだとブロックでスコープ切れないのでforEachとかmapとかを頻繁に使うので、
ブラウザによって使えないのがあるのでその対策。

Array.prototype.forEach = function(func, thisObject) {
    for (var i = 0, len = this.length; i < len; i++)
	func.call(thisObject, this[i], i, this);
}

Array.prototype.map = function(func, thisObject) {
    for (var i = 0, len = this.length, r = []; i < len; i++)
	r[i] = func.call(thisObject, this[i], i, this);
    return r;
}

Arrayオブジェクトを汚染しない版

function forEach(array, func, thisObject) {
    for (var i = 0, len = array.length; i < len; i++)
	func.call(thisObject, array[i], i, array);
}

function map(array, func, thisObject) {
    for (var i = 0, len = array.length, r = [];  i < len; i++)
	r[i] = func.call(thisObject, array[i], i, array);
    return r;
}