【问题标题】:Whats the difference between new & direct assignment in javascript? [duplicate]javascript中的新分配和直接分配有什么区别? [复制]
【发布时间】:2016-03-24 21:51:36
【问题描述】:

这是我的场景:

> 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”和“babala”有什么区别?是否存在需要以不同方式处理它们的用法的场景?

【问题讨论】:

    标签: javascript node.js


    【解决方案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 作为其原型。

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 2013-02-23
      • 2014-01-26
      • 2016-12-21
      • 2019-02-28
      • 2023-03-07
      • 2013-03-17
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多