処理JS 1.6以前のバージョンはindexOfの方法に対応していません.


javascriptにおけるindexof方法使用問題のまとめ:
jsにおけるindexOf方法の役割は:
指定されたパラメータxに基づいて、対象文字列(文字として見られる配列)または配列中のxと等しい項目の索引を返します.
この方法は非常に有用で、多くのプログラミング言語に対応する実装があり、javascriptにも例外ではないが、私はieの中で次のコードを実行するとき:
<script type="text/javascript"> 
var arr = [1,2,3]; 
alert(arr.indexOf(1)); 
</script> 
オブジェクトはこの属性と方法をサポートしていません.chromeでは、firefoxは良好に運行されています.しかし、googleはjsの中でArayのindexOf方法がjs 1.6バージョンの中でやっと実現したことを発見しました.ie 7、8の中でjs 1.3バージョンだけ実現しました.chromeはjs 1.7バージョンで、ffはjs 1.8バージョンです.(ieはまだ半拍遅れています).しようがない、ieに対して拡張するしかない:
<script type="text/javascript"> 
Array.prototype._indexOf = function(n){ 
if("indexOf" in this){ 
return this["indexOf"](n); 
} 
for(var i=0;i<this.length;i++){ 
if(n===this[i]){ 
return i; 
} 
} 
return -1; 
}; 
</script> 
以下のように使います
<script type="text/javascript"> 
var arr = ["1","2","3"]; 
alert(arr._indexOf("2")); 
</script> 
ここではArayのプロトタイプに対して拡張しましたが、拡張方法の名前に「_」の文字を付けました.これは良い習慣だと思います.プロトタイプに対して拡張する時には、自分の拡張記号をつける必要があります.
_にありますindexOf方法では、まず、現在のArayが「indexOf」方法を実現しているかどうかを判断します.もしそうであれば、直接システムのヘアスタイルを呼び出します.そうでなければ、巡回します.