MCPcopy
hub / github.com/lodash/lodash / createCtor

Function createCtor

lodash.js:5075–5098  ·  view source on GitHub ↗

* Creates a function that produces an instance of `Ctor` regardless of * whether it was invoked as part of a `new` expression or by `call` or `apply`. * * @private * @param {Function} Ctor The constructor to wrap. * @returns {Function} Returns the new wrapped function.

(Ctor)

Source from the content-addressed store, hash-verified

5073 * @returns {Function} Returns the new wrapped function.
5074 */
5075 function createCtor(Ctor) {
5076 return function() {
5077 // Use a `switch` statement to work with class constructors. See
5078 // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
5079 // for more details.
5080 var args = arguments;
5081 switch (args.length) {
5082 case 0: return new Ctor;
5083 case 1: return new Ctor(args[0]);
5084 case 2: return new Ctor(args[0], args[1]);
5085 case 3: return new Ctor(args[0], args[1], args[2]);
5086 case 4: return new Ctor(args[0], args[1], args[2], args[3]);
5087 case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
5088 case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
5089 case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
5090 }
5091 var thisBinding = baseCreate(Ctor.prototype),
5092 result = Ctor.apply(thisBinding, args);
5093
5094 // Mimic the constructor's `return` behavior.
5095 // See https://es5.github.io/#x13.2.2 for more details.
5096 return isObject(result) ? result : thisBinding;
5097 };
5098 }
5099
5100 /**
5101 * Creates a function that wraps `func` to enable currying.

Callers 6

createBindFunction · 0.85
createCurryFunction · 0.85
createHybridFunction · 0.85
wrapperFunction · 0.85
createPartialFunction · 0.85
test.jsFile · 0.85

Calls 1

isObjectFunction · 0.85

Tested by

no test coverage detected