The new.target
value is part of the ES2015 (formerly known as ES6) specification, and can take one of two values:
Inside of a constructor, new.target is set to a reference to the constructor that
was used when calling new.
Inside of a normal function, new.target is set to undefined.
new.target is useful for distinguishing at runtime whether code is being executed as
a constructor or as a function. It is also handy as a way to determine the specific subclass
that was used with new from within a superclass constructor.