Переопределенные
constructor
,
toString
,
toLocaleString
,
valueOf
,
hasOwnProperty
,
propertyIsEnumerable
и
isPrototypeOf
не становятся enumerable в IE<9, поэтому
Object.keys({toString: fn})
вернет пустой массив.
Думаю toString и valueOf хорошо бы пофиксить.
___________________
offtop
Раньше этого как-то не замечал, а вот сейчас наткнулся, такое во всех браузерах:
function F() {}
F.prototype.constructor = F;
F.prototype.toString = F;
for (var key in new F) {
alert(key);
}
constructor не становится enumerable, в отличие от toString