Та же проблема. Хотел отправить Макс комментарий по статье "Шорткаты в JavaScript", но нет прав. Оставлю комментарий здесь:
Вместо
for(var i in foo) {
// whatever foo[i]
}
нужно писать
for(var i in foo) {
if (foo.hasOwnProperty(i)) {
// whatever foo[i]
}
}
Иначе в переменной i вылезут не только числовые индексы, но и методы, добавленные в прототип Array. Пример без hasOwnProperty:
foo = ['a', 'b', 'c'];
Array.prototype.myFoo = function() { };
for(var i in foo) { console.log(i) }