このメソッドは非常に便利です。多くのプログラミング言語に対応する実装があり、JavaScript も例外ではありません。IE で次のコードを実行すると、
var arr = [1,2,3];
alert(arr.indexOf(1));
しかし、「オブジェクトはこのプロパティとメソッドをサポートしていません」というメッセージが表示されました。クロムとFFでは問題なく動作します。そこでGoogleの専門家に尋ねたところ、jsのArrayのindexOfメソッドはjs1.6バージョンでのみ実装されており、IE7と8ではjs1.3バージョンのみが実装されており、chromeはjs1.7バージョン、ffはjs1.8であることがわかりました。バージョン。 (つまり、さらに半拍遅くなります)。仕方なく IE 用に拡張します:
Array.prototype. _indexOf = function(n){
if("indexOf" in this){
return this["indexOf"](n);
for(var i=0;iif(n===this[i]){
return i;
}
return
};
は次のように使用されます:
コードをコピーします
コードは次のとおりです。 var arr = ["1","2","3"] alert(arr._indexOf("2"));ここでは、Array プロトタイプを拡張しました。拡張では、メソッドの名前に「_」文字を追加しました。これは、プロトタイプを拡張するときに、拡張子をマークする必要があると思います。
_indexOf メソッドでは、まず現在の配列が「indexOf」メソッドを実装しているかどうかを判断します。実装している場合は、システム メソッドを直接呼び出します。そうでない場合は、システム メソッドが実行されます。