Фабрика классов


// Фабрика классов

function Factory() { }
Factory.savePrototype = Factory.prototype;

function create(functionConstructor){
    Factory.prototype =  functionConstructor.prototype;
    var newObject = new Factory();
    Factory.prototype =  Factory.savePrototype;
    var  newArguments = [];
    for (var i = 1; i < arguments.length; i++)
        newArguments[i-1] = arguments[i];
    functionConstructor.apply(newObject, newArguments);
    return newObject;
}