Se hai lavorato con JavaScript a lungo, sei consapevole che Internet Explorer non implementa la funzione ECMAScript per Array.prototype.indexOf () [incluso Internet Explorer 8]. Non è un grosso problema, perché puoi estendere la funzionalità sulla tua pagina con il seguente codice.
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;
}
Quando dovrei implementarlo?
Devo avvolgerlo su tutte le mie pagine con il seguente controllo, che controlla se esiste la funzione prototipo e, in caso contrario, andare avanti ed estendere il prototipo di array?
if (!Array.prototype.indexOf) {
// Implement function here
}
Oppure controlla il browser e se è Internet Explorer, implementalo?
//Pseudo-code
if (browser == IE Style Browser) {
// Implement function here
}
Array.indexOf
non tiene conto degli indici di partenza negativi. Vedi l'implementazione stop-gap dei suggerimenti di Mozilla qui: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
Array.prototype.indexOf
non fa parte dell'ECMA-262 / ECMAScript. Vedi ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf Forse stai pensandoString.prototype.indexOf
...