JS:旧IEでJSエラー時の対処方 Array.map()編

JS:旧IEでJSエラー時の対処方 Array.map()編

author : koki

publish date :

最近旧IEブラウザまで対応する案件は少なくなっていますが、稀に対応しなければいけない事があります。
モダンブラウザで開発して、IEで確認したらJSエラーが発生しているって事結構あります・・・
エラーが出えた場合、ロジックをまるっと書き抱えないといけない事がありますが、30行程度のコードをスクリプトの最初に追加するだけでエラーを回避できる場合もあります。

Array.map()をIE8以下で使うとこんなエラーが

エラー内容

エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。

Array.map()を使うスクリプトをIE8以下で開くとエラーが起こります。
ですが、そんな下位IEのエラーも綺麗さっぱり無くす事ができます。

エラーとなるブラウザ

IE8以下

エラーが起きるスクリプト

var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);

追加するコード

if(!Array.prototype.map){
	Array.prototype.map = function(callback, thisArg){
		var T, A, k;
		if(this == null){
			throw new TypeError(' this is null or not defined');
		}
		var O = Object(this);
		var len = O.length >>> 0;
		if(typeof callback !== 'function'){
			throw new TypeError(callback + ' is not a function');
		}
		if(arguments.length > 1){
			T = thisArg;
		}
		A = new Array(len);
		k = 0;
		while(k < len){
			var kValue, mappedValue;
			if(k in O){
				kValue = O[k];
				mappedValue = callback.call(T, kValue, k, O);
				A[k] = mappedValue;
			}
			k++;
		}
		return A;
	};
}

この28行のコードをスクリプト上部に追加するだけで、 IE7とIE8でエラーが無くなります。

参考サイト