Claude Pache (2015-01-19T13:51:42.000Z)
d at domenic.me (2015-01-28T19:33:52.163Z)
`new.target` is a reference to the constructor, not the prototype, so the problem does not arise in practice. But anyhow, I do think that `undefined` is semantically better here: * `new.target === null` means: `new.target` has been set to "no object". * `new.target === undefined` means: `new.target` has not been set. When you execute a function body with the semantics of [[Construct]], the value of `new.target` is the original constructor on which `new` was applied. If it was possible to have the semantics of [[Construct]] with no original constructor, then `new.target` would be `null` (no-object). But when you execute a function body with the semantics of [[Call]], there is no notion of "original constructor", and `new.target` is left with no value, i.e. `undefined`.