The "new" keyword in JS does four things, according to https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new: 1. It allocates a new object in memory 2. It sets the new object's prototype to the `.prototype` property of the constructor function 3. It calls the constructor function, with the context ("this") set to the new object 4. If the constructor explicitly returned an object, the `new` operator will return that object. Otherwise, it returns the newly created object. What follows is an attempt to re-create that, using just the reflection tools available in JS. Corrections and improvements welcome. If correct, this is in effect userland implementation of the ES6 Reflect.construct function (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/construct)