Ещё вариант ...
String.prototype.index = function (c) {
for (var a = -1, d = this.length, b = 0; b < d; b++) {
if (c.length > d) break;
a++;
if (c.charAt(a) !== this.charAt(b)) {
b -= a;
a = -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') )
// Где ищем
var s = 'A';
// Что ищем
var t = 'AB';
alert([
'В строке "' + s + '"',
'ищем "' + t + '"',
'и находим: ' + s.index(t), // Должно быть -1, показывает 0
'хотя там быть не должно: ' + s.indexOf(t) // Показывает -1
].join('\n'));
var s1 = 'aababaO_o',
l1 = 'aba', l2 = 'abac', l3 = 'aa', l4 = 'O_o';
alert( [
[s1.index(l1), s1.indexOf(l1)],
[s1.index(l2), s1.indexOf(l2)],
[s1.index(l3), s1.indexOf(l3)],
[s1.index(l4), s1.indexOf(l4)]
].join('\n') )