00001 var baseCreate = require('./_baseCreate'),
00002 isObject = require('./isObject');
00003
00012 function createCtor(Ctor) {
00013 return function() {
00014
00015
00016
00017 var args = arguments;
00018 switch (args.length) {
00019 case 0: return new Ctor;
00020 case 1: return new Ctor(args[0]);
00021 case 2: return new Ctor(args[0], args[1]);
00022 case 3: return new Ctor(args[0], args[1], args[2]);
00023 case 4: return new Ctor(args[0], args[1], args[2], args[3]);
00024 case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
00025 case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
00026 case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
00027 }
00028 var thisBinding = baseCreate(Ctor.prototype),
00029 result = Ctor.apply(thisBinding, args);
00030
00031
00032
00033 return isObject(result) ? result : thisBinding;
00034 };
00035 }
00036
00037 module.exports = createCtor;