【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)生成对象,可用于需要封装或扩展属性的场景。两者应根据需求选择使用。

浙公网安备 33010602011771号