It's quite annoying. In theory, you should be able to add properties and
methods to any object you create in JavaScript. But in this case, you can't.

The misnomer

In JavaScript, every object has a constructor property, we are
taught. In actuality, this isn't quite true. The constructor property is a
function. Therefore, it is more accurate to say every object has a
constructor method. By calling this method, you can create new
objects of the same type as the original object:

var y = new obj.constructor()

What makes this so interesting is every object you create by this method
you can add properties to.

The solution

Why not re-initialize the original object in this manner?

obj = new obj.constructor(obj)

This works!! By giving the constructor method (or function, as the
case may be) the object itself as an argument, it will return an exact copy
of the original object. We must declare the object using the new
statement, however, to re-initialize the original object altogether. (Don't
ask me why. It just works that way. It's more syntactically
correct anyway.) Thus, the following produces the desired result: