Насколько я понял, это выглядет примерно так:
function SomeConstructor( object ){
this.property1 = object.property1 || 'default';
this.property2 = object.property2 || 'default';
};
var func = function(){};
func.property1 = 'value';
Function.prototype.property2 = 'zapadlo';
new SomeConstructor( func ); // Тысяча чертей, почему property2 не 'default'???
Но для себя я решил, что имею полное право дополнять нативные конструкторы там, где считаю нужным. Что плохого в том, что я, например, добавляю в Array.prototype методы forEach, filter и пр.? Я, конечно, понимаю про for..in, но мы же знаем, как зовут тех, кто так переберает массивы?