在 JavaScript 中,内置对象(Built-in Objects) 是指在程序执行前就已经存在于全局作用域中的对象,它们由 JavaScript 引擎自动提供,开发者无需手动定义即可直接使用。
这些对象不仅包括基本数据类型的包装对象,还包括用于结构化数据处理、异步控制、反射、国际化等的高级对象。理解这些对象的分类和用途,有助于我们更高效地编写 JavaScript 代码。
✅ 一句话总结
JavaScript 的内置对象是语言标准中定义的全局对象,分为值属性、函数属性、基本对象、集合对象、控制抽象对象、反射对象等类别,涵盖了从基础数据类型到高级抽象的完整功能体系。
✅ 一、JavaScript 内置对象分类详解
🧩 1. 值属性(Value Properties)
这些不是对象,而是全局作用域中的简单值,常用于表示特殊含义。
| 属性名 | 说明 |
|---|---|
Infinity | 表示正无穷大 |
NaN | 表示“不是一个数字” |
undefined | 表示未定义的值 |
null | 表示空值(注意:null 是字面量,不是对象) |
📌 示例:
console.log(1 / 0); // Infinity
console.log(0 / 0); // NaN
🧩 2. 函数属性(Global Functions)
这些是全局函数,可以直接调用,无需通过对象调用。
| 函数名 | 说明 |
|---|---|
eval() | 执行字符串形式的 JavaScript 代码 |
parseInt() | 解析字符串并返回整数 |
parseFloat() | 解析字符串并返回浮点数 |
isNaN() | 判断一个值是否为 NaN |
isFinite() | 判断一个值是否是有限数 |
decodeURI() / encodeURI() | 对 URI 进行编码/解码 |
📌 示例:
console.log(parseInt("123px")); // 123
console.log(isNaN("abc")); // true
🧩 3. 基本对象(Fundamental Objects)
这些是最基础的对象类型,是其他对象的基础。
| 对象名 | 说明 |
|---|---|
Object | 所有对象的基类 |
Function | 函数对象,所有函数的构造器 |
Boolean | 布尔值的包装对象 |
Symbol | 创建唯一标识符 |
Error | 错误基类,用于抛出和捕获异常 |
Number | 数值的包装对象 |
String | 字符串的包装对象 |
📌 示例:
const obj = new Object();
const str = new String("hello");
const sym = Symbol("key");
🧩 4. 数字与日期对象(Numbers and Dates)
用于处理数值、数学运算和时间日期。
| 对象名 | 说明 |
|---|---|
Number | 数值包装对象,提供数值类型的方法 |
Math | 提供数学计算的静态方法和常量 |
Date | 表示时间日期的对象 |
📌 示例:
console.log(Math.PI); // 3.141592653589793
const now = new Date();
console.log(now.toLocaleDateString()); // 2025-07-21
🧩 5. 字符串相关对象(Text Processing)
| 对象名 | 说明 |
|---|---|
String | 字符串包装对象 |
RegExp | 正则表达式对象,用于模式匹配 |
📌 示例:
const regex = /hello/;
console.log(regex.test("hello world")); // true
🧩 6. 可索引的集合对象(Indexed Collections)
这些对象表示按索引排序的数据集合,主要包括数组和类数组结构。
| 对象名 | 说明 |
|---|---|
Array | 数组对象,有序、可变大小的集合 |
Int8Array、Uint8Array、Float32Array 等 | 类型数组,用于操作二进制数据 |
ArrayBuffer | 用于表示原始二进制缓冲区 |
DataView | 提供对 ArrayBuffer 的灵活访问方式 |
📌 示例:
const arr = [1, 2, 3];
const buffer = new ArrayBuffer(8);
const view = new DataView(buffer);
🧩 7. 使用键的集合对象(Keyed Collections)
这些对象使用键来访问数据,支持插入顺序迭代。
| 对象名 | 说明 |
|---|---|
Map | 键值对集合,键可以是任意类型 |
Set | 集合,值唯一 |
WeakMap | 键为对象的 Map,不影响垃圾回收 |
WeakSet | 值为对象的 Set,不影响垃圾回收 |
📌 示例:
const map = new Map();
map.set("key", "value");
console.log(map.get("key")); // value
🧩 8. 矢量集合(SIMD)
用于并行处理多个数据,提高性能(现代浏览器中支持有限)。
| 对象名 | 说明 |
|---|---|
SIMD | 提供 SIMD(单指令多数据)操作的 API(已废弃) |
🧩 9. 结构化数据(Structured Data)
用于处理结构化数据,如 JSON 和二进制缓冲区。
| 对象名 | 说明 |
|---|---|
JSON | 用于解析和序列化 JSON 数据 |
ArrayBuffer | 见上 |
DataView | 见上 |
📌 示例:
const obj = { name: "Tom" };
const jsonStr = JSON.stringify(obj);
console.log(jsonStr); // {"name":"Tom"}
🧩 10. 控制抽象对象(Control Abstraction)
用于控制程序执行流程,尤其是异步编程。
| 对象名 | 说明 |
|---|---|
Promise | 异步操作的最终完成或失败 |
Generator | 生成器函数,可暂停执行 |
Proxy | 用于定义自定义行为的对象 |
Reflect | 提供操作对象的静态方法 |
📌 示例:
function* gen() {
yield 1;
yield 2;
}
const g = gen();
console.log(g.next().value); // 1
🧩 11. 反射(Reflection)
用于在运行时动态操作对象。
| 对象名 | 说明 |
|---|---|
Proxy | 创建代理对象,拦截并自定义操作 |
Reflect | 提供与 Object 类似的方法,但更统一 |
📌 示例:
const target = {};
const handler = {
get() {
return "intercepted";
}
};
const proxy = new Proxy(target, handler);
console.log(proxy.name); // intercepted
🧩 12. 国际化(Internationalization)
用于支持多语言和本地化处理。
| 对象名 | 说明 |
|---|---|
Intl | 国际化 API 的命名空间 |
Intl.Collator | 用于字符串排序 |
Intl.DateTimeFormat | 用于日期格式化 |
Intl.NumberFormat | 用于数字格式化 |
📌 示例:
const formatter = new Intl.NumberFormat("zh-CN", {
style: "currency",
currency: "CNY"
});
console.log(formatter.format(12345.67)); // ¥12,345.67
🧩 13. WebAssembly
用于与 WebAssembly 交互,执行高性能代码。
| 对象名 | 说明 |
|---|---|
WebAssembly | 提供 WebAssembly 模块加载和执行的接口 |
🧩 14. 其他特殊对象
| 对象名 | 说明 |
|---|---|
arguments | 函数内部的类数组对象,包含所有传入参数(在箭头函数中不可用) |
📌 示例:
function example() {
console.log(arguments);
}
example(1, 2, 3); // { '0': 1, '1': 2, '2': 3 }
✅ 一句话总结
JavaScript 的内置对象涵盖了从基础数据类型、集合结构、异步控制、反射机制到国际化支持等多个方面,是构建现代 Web 应用的基础。熟练掌握这些对象的分类和使用方法,是提升 JavaScript 编程能力的关键。
💡 进阶建议
- 在使用
Map、Set等集合对象时,注意其与Object的差异; - 在异步编程中,
Promise和async/await是必备技能; - 使用
Proxy和Reflect可以实现强大的元编程; - 国际化对象
Intl可用于构建多语言应用; - 掌握
TypedArray和ArrayBuffer是处理二进制数据的基础;