Якщо ви працювали з JavaScript будь-якої тривалості, вам відомо, що Internet Explorer не реалізує функцію ECMAScript для Array.prototype.indexOf () [включаючи Internet Explorer 8]. Це не величезна проблема, адже ви можете розширити функціональність на своїй сторінці за допомогою наступного коду.
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
...