【js篇】JavaScript 有哪些内置对象?

227 阅读5分钟

在 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数组对象,有序、可变大小的集合
Int8ArrayUint8ArrayFloat32Array类型数组,用于操作二进制数据
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 编程能力的关键。


💡 进阶建议

  • 在使用 MapSet 等集合对象时,注意其与 Object 的差异;
  • 在异步编程中,Promiseasync/await 是必备技能;
  • 使用 ProxyReflect 可以实现强大的元编程;
  • 国际化对象 Intl 可用于构建多语言应用;
  • 掌握 TypedArrayArrayBuffer 是处理二进制数据的基础;