Remove unused internal createCtor.

This commit is contained in:
John-David Dalton
2017-03-27 14:18:21 -07:00
parent 6d19563a9f
commit dad1fccdb4

View File

@@ -1,36 +0,0 @@
import isObject from '../isObject.js'
/**
* 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.
*/
function createCtor(Ctor) {
return function(...args) {
// Use a `switch` statement to work with class constructors. See
// http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
// for more details.
switch (args.length) {
case 0: return new Ctor
case 1: return new Ctor(args[0])
case 2: return new Ctor(args[0], args[1])
case 3: return new Ctor(args[0], args[1], args[2])
case 4: return new Ctor(args[0], args[1], args[2], args[3])
case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4])
case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5])
case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6])
}
const proto = Ctor.prototype
const thisBinding = proto == null ? {} : Object.create(Object(proto))
const result = Ctor.apply(thisBinding, args)
// Mimic the constructor's `return` behavior.
// See https://es5.github.io/#x13.2.2 for more details.
return isObject(result) ? result : thisBinding
}
}
export default createCtor