什么是Number对象?

在JavaScript中,Number对象是处理数字值的包装对象。你可以把它想象成一个”数字工具箱”,里面装满了处理数字的各种工具(属性和方法)。

简单理解:

当你在代码中写一个普通数字时(比如42),它是原始值。但当你需要在这个数字上调用方法时,JavaScript会自动把它包装成Number对象,这样你就可以使用Number对象提供的各种功能了。

创建Number对象

有两种方式创建Number对象:

1. 使用构造函数(不常用)

// 创建Number对象
let numObj = new Number(10);
console.log(typeof numObj); // “object”
console.log(numObj); // Number {10}

2. 字面量方式(常用)

// 数字字面量(实际使用时JavaScript会自动处理)
let num = 10;
console.log(typeof num); // “number”

// 但我们可以直接在字面量上调用Number方法
console.log((10).toString()); // “10”
最佳实践: 大多数情况下,直接使用数字字面量即可,JavaScript会在需要时自动转换为Number对象

Number对象的属性

这些是Number对象自带的一些特殊值,可以直接通过Number.属性名访问:

常用属性:

// 最大可表示的数
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308

// 最小可表示的数(接近0的正数)
console.log(Number.MIN_VALUE); // 5e-324

// “非数字”值(Not-A-Number)
console.log(Number.NaN); // NaN

// 正无穷大
console.log(Number.POSITIVE_INFINITY); // Infinity

// 负无穷大
console.log(Number.NEGATIVE_INFINITY); // -Infinity
注意: NaN与任何值都不相等,包括它自己!判断NaN应该使用isNaN()函数

Number对象的方法

这些是Number对象提供的工具方法,用于操作和转换数字:

1. toString() – 转换为字符串

let num = 15;

// 转换为十进制字符串
console.log(num.toString()); // “15”

// 转换为二进制字符串
console.log(num.toString(2)); // “1111”

// 转换为十六进制字符串
console.log(num.toString(16)); // “f”

2. toFixed() – 固定小数位数

let price = 19.99;

// 保留2位小数(常用于货币)
console.log(price.toFixed(2)); // “19.99”

// 保留0位小数(四舍五入)
console.log(price.toFixed(0)); // “20”

// 注意:返回的是字符串!

3. toExponential() – 科学计数法

let bigNum = 123456;

// 转换为科学计数法字符串
console.log(bigNum.toExponential()); // “1.23456e+5”
console.log(bigNum.toExponential(2)); // “1.23e+5”

4. toPrecision() – 指定有效数字

let num = 123.456;

console.log(num.toPrecision(5)); // “123.46”(5位有效数字)
console.log(num.toPrecision(2)); // “1.2e+2″(2位有效数字)

5. valueOf() – 获取原始值

let numObj = new Number(42);
console.log(numObj.valueOf()); // 42(原始数字值)

Number原始值 vs Number对象

关键区别:

  • 原始值:轻量级,直接存储数值(如:let n = 10)
  • Number对象:是对象,有属性和方法(如:new Number(10))
// 原始值
let num1 = 100;
console.log(typeof num1); // “number”

// Number对象
let num2 = new Number(100);
console.log(typeof num2); // “object”

// 比较(值相同,但类型不同)
console.log(num1 == num2); // true(值相等)
console.log(num1 === num2); // false(类型不同)
自动装箱: 当你在原始值上调用方法时,JavaScript会自动将其包装成临时Number对象,调用完后再丢弃这个临时对象

总结:Number对象核心要点

  • Number对象是JavaScript中处理数字的工具箱
  • 实际编码中多使用数字字面量,JavaScript会自动处理转换
  • 常用方法:toString(), toFixed(), toExponential(), toPrecision()
  • 注意特殊值:NaN, Infinity 的处理方式
  • 原始值和对象有区别,但大多数情况下不必手动创建对象
  • 处理小数精度时要特别小心(如0.1 + 0.2 !== 0.3)