Ни одно из собственных свойств прототипа не перечисляемо, но вы можете точно узнать, что вы ищете в спецификации ECMA:
http://www.ecma -international.org / публикации / файлы / ECMA-ST / ECMA-262.pdf
Вы можете перечислять только те свойства, которые вы определили, например:
Object.prototype.foo = function(){};
x = {};
for ( var prop in x ) {
alert( prop );
}
предупредит:
Foo
Еще один полезный совет: вы можете использовать object.hasOwnProperty( property )
внутри for..in loop
для ветвления, только если объект непосредственно владеет свойством и свойство не происходит от прототипа конструктора, из которого все объекты в значительной степени происходят от Object.prototype
.