処理JS 1.6以前のバージョンはindexOfの方法に対応していません.
javascriptにおけるindexof方法使用問題のまとめ:
jsにおけるindexOf方法の役割は:
指定されたパラメータxに基づいて、対象文字列(文字として見られる配列)または配列中のxと等しい項目の索引を返します.
この方法は非常に有用で、多くのプログラミング言語に対応する実装があり、javascriptにも例外ではないが、私はieの中で次のコードを実行するとき:
_にありますindexOf方法では、まず、現在のArayが「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」方法を実現しているかどうかを判断します.もしそうであれば、直接システムのヘアスタイルを呼び出します.そうでなければ、巡回します.