рони,
String.prototype.index = function (c) {
for (var a = -1, d = this.length, b = 0; b < d; b++) {
if(c.length > d) return a;
a++;
a = c.charAt(a) === this.charAt(b) ? a : c.charAt(0) === this.charAt(b) ? 0 : -1;
if (a == c.length - 1) return b - c.length + 1
}
return a
};
var s1 = 'aababaO_o',
l1 = 'abaO', l2 = 'abac', l3 = 'aa', l4 = 'O_o';
alert( [
[s1.index(l1), s1.indexOf(l1)]
].join('\n') )
Matre, вполне нормальный. Причем точно такие же результаты будут у других пользователей.
А вот алгоритм у Вас кривой.
Принимая во внимание то, что все известные
алгоритмы поиска подстроки требуют либо предварительной обработки данных, либо работают дольше, чем за O(n), маловероятно, что существует алгоритм, позволяющий "с места", без подготовки найти заданную подстроку в строке за один просмотр исходной строки.