related: Confusion about protype chain , primitives and objects
in Firebug console :
a = 12
a.constructor.prototype.isPrototypeOf(a) // prints \'fals
a = new Number(12);
a.constructor.prototype.isPrototypeOf(a) // prints 'true'
I'm not smart enough to tell you why I just know that this is how it is. And yes, it's weird.
Now, you could say "12 is a primitive and new Number(12) is an object". But how do you explain this?
(12).toFixed(3); // "12.000"
Apparently somewhere JavaScript is deciding the primitive might as well be an object.
Why does this distinction exist? How do you convert between the two forms? How does this impact performance? All questions related to this question that I don't have the answer to.