这是我的情景:
> var babloo = new Number(12)
[Number: 12]
> var bablaa = 12
12
> babloo.
babloo.__defineGetter__ babloo.__defineSetter__ babloo.__lookupGetter__ babloo.__lookupSetter__ babloo.__proto__ babloo.constructor babloo.hasOwnProperty
babloo.isPrototypeOf babloo.propertyIsEnumerable babloo.toLocaleString babloo.toString babloo.valueOf
babloo.toExponential babloo.toFixed babloo.toPrecision
> bablaa.
bablaa.__defineGetter__ bablaa.__defineSetter__ bablaa.__lookupGetter__ bablaa.__lookupSetter__ bablaa.__proto__ bablaa.constructor bablaa.hasOwnProperty
bablaa.isPrototypeOf bablaa.propertyIsEnumerable bablaa.toLocaleString bablaa.toString bablaa.valueOf
bablaa.toExponential bablaa.toFixed bablaa.toPrecision
> typeof babloo
'object'
> typeof bablaa
'number'
这里的“babloo”和“bablaa”有什么区别?是否存在需要以不同方式处理其用法的情况?
答案 0 :(得分:1)
考虑:
var babloo = new Number(12); //typeof babloo is "object"
它是使用Number constructor
显式创建的,PrimitiveValue
属性设置为12
考虑:
var bablaa = 12 //typeof bablaa is "number"
其原始数据类型编号为12。
它也使用Number constructor
构造,但隐式使用Number
作为包装器。
如果致电
Object.getPrototypeOf(babloo) //Number
和
Object.getPrototypeOf(bablaa) //Number
两者都将返回Number
作为其原型。