任意の長さでJavaScriptを使用したことがある場合は、Internet ExplorerがArray.prototype.indexOf()[Internet Explorer 8を含む]のECMAScript関数を実装していないことに気づいています。次のコードを使用してページの機能を拡張できるため、これは大きな問題ではありません。
Array.prototype.indexOf = function(obj, start) {
for (var i = (start || 0), j = this.length; i < j; i++) {
if (this[i] === obj) { return i; }
}
return -1;
}
これはいつ実装すべきですか?
プロトタイプ関数が存在するかどうかをチェックする次のチェックですべてのページにラップする必要があります。存在しない場合は、先に進んで配列プロトタイプを拡張しますか?
if (!Array.prototype.indexOf) {
// Implement function here
}
または、ブラウザチェックを行い、それがInternet Explorerである場合は、実装するだけですか?
//Pseudo-code
if (browser == IE Style Browser) {
// Implement function here
}
Array.indexOf
は、負の開始インデックスは考慮されません。:ここではMozillaの提案ストップギャップの実装を参照してくださいdeveloper.mozilla.org/en/JavaScript/Reference/Global_Objects/...
Array.prototype.indexOf
はECMA-262 / ECMAScriptの一部ではありません。ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdfを参照してくださいたぶん、あなたは考えていString.prototype.indexOf
ます...