JavaScriptにおけるindexOfの使い方と問題についてのまとめ

1044 ワード

この方法は非常に有用で、多くのプログラミング言語に対応する実装があり、javascriptにも例外ではないが、私はieの中で次のコードを実行するとき:
 
  
var arr = [1,2,3];
alert(arr.indexOf(1));
オブジェクトはこの属性と方法をサポートしていません.chromeでは、ffは良好に運行しています.google大神さんに聞いてみたら、jsの中でArayのindexOf方法はjs 1.6バージョンの中でやっと実現しました.ie 7、8の中でjs 1.3バージョンだけ実現しました.chromeはjs 1.7バージョンで、ffはjs 1.8バージョンです.(ieはまだ半拍遅れています).しようがない、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 -1;
};
以下のように使います
 
  
var arr = ["1","2","3"];
alert(arr._indexOf("2"));
ここではArayのプロトタイプに対して拡張しましたが、拡張方法の名前に「_」の文字を付けました.これは良い習慣だと思います.プロトタイプに対して拡張する時には、自分の拡張記号をつける必要があります.
_にありますindexOf方法では、まず、現在のArayが「indexOf」方法を実現しているかどうかを判断します.もしそうであれば、直接システムのヘアスタイルを呼び出します.そうでなければ、巡回します.