Jika Anda telah bekerja dengan JavaScript, Anda tahu bahwa Internet Explorer tidak mengimplementasikan fungsi ECMAScript untuk Array.prototype.indexOf () [termasuk Internet Explorer 8]. Ini bukan masalah besar, karena Anda dapat memperluas fungsionalitas pada halaman Anda dengan kode berikut.
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;
}
Kapan saya harus menerapkan ini?
Haruskah saya membungkusnya di semua halaman saya dengan cek berikut, yang memeriksa apakah fungsi prototipe ada dan jika tidak, silakan dan memperpanjang prototipe Array?
if (!Array.prototype.indexOf) {
// Implement function here
}
Atau apakah browser memeriksa dan apakah itu Internet Explorer maka cukup laksanakan?
//Pseudo-code
if (browser == IE Style Browser) {
// Implement function here
}
Array.indexOf
tidak memperhitungkan indeks awal yang negatif. Lihat penerapan stop-gap saran Mozilla di sini: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
Array.prototype.indexOf
bukan bagian dari ECMA-262 / ECMAScript. Lihat ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf Mungkin Anda berpikirString.prototype.indexOf
...