for-in
перебирает все перечисляемые свойства объекта, включая все, что определено в объекте или его прототипах. Большинство встроенных функций объявлены не перечисляемыми, поэтому они не появляются во время обычной итерации. ECMAScript 5 позволяет вам определять свои собственные свойства как не перечисляемые, хотя я не уверен, какие браузеры поддерживают это:
function testerFunc() {
return 'tester';
}
Object.defineProperty(Array.prototype, 'tester', {
value: testerFunc,
writable: true,
enumerable: false,
configurable: true
});