在 Firebug 控制台中:
a = 12
a.constructor.prototype.isPrototypeOf(a) // prints 'false'
我认为这应该打印true
在 Firebug 控制台中:
a = 12
a.constructor.prototype.isPrototypeOf(a) // prints 'false'
我认为这应该打印true
a = 12
创建一个原始数字,它与对象不完全相同Number
。出于属性访问的目的,基元被隐式转换为对象。
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
当使用参数V
isPrototypeOf
调用该方法时,将执行以下步骤:
- 如果V不是对象,则返回
false
。
严格来说,原始数字不是对象。
a = new Number(12);
a.constructor.prototype.isPrototypeOf(a) // prints 'true'
我不够聪明,无法告诉你为什么我只知道事情就是这样。是的,这很奇怪。
现在,你可以说“12
是一个原始的并且new Number(12)
是一个对象”。但是你怎么解释这个?
(12).toFixed(3); // "12.000"
显然,JavaScript 在某个地方决定原语也可能是一个对象。
为什么会存在这种区别?你如何在这两种形式之间转换?这对性能有何影响?我没有答案的与这个问题相关的所有问题。