related: Confusion about protype chain , primitives and objects
in Firebug console :
a = 12
a.constructor.prototype.isPrototypeOf(a) // prints \'fals
a = 12
creates a primitive number, which is not quite the same as a Number
object. Primitives are implicitly cast to objects for purposes of property access.
a = 12; //a is a primitive
b = new Number(12); //b is an object
a.constructor.prototype.isPrototypeOf(a); //false because a is primitive
b.constructor.prototype.isPrototypeOf(b); //true because b is an object
As per the ECMAScript spec:
When the
isPrototypeOf
method is called with argument V, the following steps are taken:
- If V is not an object, return
false
.
primitive numbers are not, strictly speaking, objects.