【JavaScript】Number(2) 和 Object(2) 的区别

【本篇博客由AI生成】

在JavaScript中,Number(2)Object(2)的行为和结果有显著区别:

1. 类型与返回值

  • Number(2)
    直接调用Number函数(非构造函数模式),会将参数转换为原始数值(primitive number)。

    • 返回值类型为number,值为2
    • 示例:typeof Number(2) === "number",结果为true
  • Object(2)
    调用Object构造函数时,若参数是原始值,会将其包装为对应的对象

    • 返回值类型为object(具体是Number对象实例),值为Number {2}
    • 示例:Object(2) instanceof Number,结果为true

2. 比较与运算

  • 严格相等性(===

    Number(2) === 2;   // true(原始值比较)
    Object(2) === 2;   // false(对象与原始值比较)
    
  • 运算时的隐式转换
    对象会通过valueOf()转换为原始值后参与运算:

    Number(2) + 3;    // 5  
    Object(2) + 3;    // 5(等价于 2 + 3)
    

3. 属性操作

  • 原始值无法添加属性

    const num = Number(2);
    num.foo = "bar";
    console.log(num.foo); // undefined
    
  • 对象可以添加属性

    const obj = Object(2);
    obj.foo = "bar";
    console.log(obj.foo); // "bar"
    

4. 构造函数与new

  • new Number(2)
    Object(2)效果相同,均返回Number对象实例。
    new Number(2) === Object(2); // false(不同实例)
    new Number(2).valueOf() === Object(2).valueOf(); // true(值相同)
    

总结表

特性 Number(2) Object(2)
返回值类型 number(原始值) object(Number对象)
严格等于原始值 true(如 === 2 false
添加属性 无效(原始值无属性) 有效(对象可扩展属性)
构造函数调用 new Number(2)生成对象 直接生成对象

结论
Number(2)生成原始数值,适用于单纯的值计算;Object(2)生成对象,可用于需要封装或扩展属性的场景。两者应根据需求选择使用。

posted @ 2025-02-24 10:20  unuliha  阅读(17)  评论(0)    收藏  举报