Array.prototype.testi = function() {console.log('hep');}
var b = new Array();
b.push(1, 5, 'b', 'c');
for (var i in b) {
console.log(b[i]);
}
Это будет регистрировать (в Chrome)
1
2
b
c
function () {console.log('hep');}
Или живой пример в http://jsfiddle.net/marqs/6VVka/1/
Мой вопрос, почему функция отображается в списке, хотяэто дано для прототипа массива?
Это имеет значение для расширения функций браузера, которые не используются (например, IE extended Array.filter будет вести себя иначе, если используется массив in и т. Д.).
Редактировать: чтобы уточнить, у меня нет доступа к коду, который выполняет цикл for-in, так как это внешняя библиотека.Таким образом, формулировка вопроса больше о том, «почему это так», чем о том, как это исправить.