Отсутствие метода indexOf в Internet Explorer. Решение проблемы
При написании скриптов на JavaScript, самой распространённой проблемой является кроссбраузерность кода. Если вы пишите скрипт и тестируете его лишь на одном браузере, с вероятностью семьдесят процентов, он не будет работать на другом.
Согласитесь, в жаркое лето глупо лишать себя кондиционера, ведь экономия получится не такая уж большая, а комфорт вы получите просто царский.
Причиной является разность в классовой структуре браузеров, и некоторые методы или свойства могут выглядеть иначе. В основном эта проблема решается просто – нужно лишь найти подходящий аналог метода или свойства для тех браузеров под которые рассчитано ваше приложение. Однако бывают случаи когда аналога не существует. С одной такой проблемой я столкнулся недавно при написании скрипта под Internet Explorer. Оказалось что в классе Array просто нет метода indexOf, определяющего номер вхождения символа в массив. Можно конечно написать функцию наподобие этой -
function indexOf(mass,let){
for(i=o;i<mass.length;i++){
if(mass[i]==let)return i;
}
return -1;
}
Однако есть более изящный способ решения данной проблемы. Дело в том что в классовой структуре IE предусмотрено написание собственных прототипов класса, и благодаря этому, написав такой прототип, можно пользоваться функцией в привычном виде -
Array.prototype.indexOf = function(let){
for(i=o;i<this.length;i++){
if(this[i]==let)return i;
}
return -1;
}