Rearrange the mapFn and thisArg steps to not rely on the `undefined` primitive, and remove the extra "mapping" variable.
Make sure that the constructed Array subclass is wrapped in Object.
The mapping function should not receive the third "list" parameter that most mapping functions receive.
Don't use Function#call if the thisArg is not provided.
Removing isConstructor - unfortunately, it's not safe to rely on constructors not having side effects. In addition, most any function is constructable.