...a new empty object is created, (let’s name it newObj) and the function is invoked on that object,
like say, newObj.Person() in this case.
Is this true? When a function is invoked with "new", "this" is set to the object being constructed, but is that accomplished by making the constructor a method of the object being initialized? If so, it must be removed later on in the process:
It is not true. It's just a confusing attempt by the article to explain what happens to `this` inside Person().
If anything, it's more like:
var newObj = Object.create(Person.prototype)
var result = Person.call(newObj)
if (typeof result === 'object' && result !== null) return result
return newObj
The article didn't explain it like that because that requires introducing the concept of .call() on functions.