Wenn Sie längere Zeit mit JavaScript gearbeitet haben, wissen Sie, dass Internet Explorer die ECMAScript-Funktion für Array.prototype.indexOf () [einschließlich Internet Explorer 8] nicht implementiert. Dies ist kein großes Problem, da Sie die Funktionalität Ihrer Seite mit dem folgenden Code erweitern können.
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;
}
Wann sollte ich das implementieren?
Sollte ich es auf allen meinen Seiten mit der folgenden Prüfung einschließen, die prüft, ob die Prototypfunktion vorhanden ist, und wenn nicht, den Array-Prototyp erweitern?
if (!Array.prototype.indexOf) {
// Implement function here
}
Oder überprüfen Sie den Browser und implementieren Sie ihn einfach, wenn es sich um Internet Explorer handelt?
//Pseudo-code
if (browser == IE Style Browser) {
// Implement function here
}
Array.indexOf
berücksichtigt keine negativen Startindizes. Siehe Mozillas Vorschlag Stop-Gap-Implementierung hier: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
Array.prototype.indexOf
nicht Teil von ECMA-262 / ECMAScript. Siehe ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf Vielleicht denken SieString.prototype.indexOf
...