If you have worked with JavaScript at any length you are aware that Internet Explorer does not implement the ECMAScript function for Array.prototype.indexOf() [including Internet Explorer 8]. It is not a huge problem, because you can extend the functionality on your page with the following code.
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;
}
When should I implement this?
Should I wrap it on all my pages with the following check, which checks if the prototype function exists and if not, go ahead and extend the Array prototype?
if (!Array.prototype.indexOf) {
// Implement function here
}
Or do browser check and if it is Internet Explorer then just implement it?
//Pseudo-code
if (browser == IE Style Browser) {
// Implement function here
}
Array.prototype.indexOf
is not part of ECMA-262/ECMAScript. See ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf Maybe you're thinkingString.prototype.indexOf
... – Crescent FreshArray.indexOf
doesn't take negative starting indices into account. See Mozilla's suggestion stop-gap implementation here: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… – nickf