JavaScript 提供了一系列内置对象(Built-in Objects),它们由 ECMAScript 规范定义,在 JavaScript 引擎启动时自动创建,无需额外引入。这些对象为开发者提供了处理数据、执行操作和与环境交互的核心功能。
内置对象可以分为以下几大类:
一、基础对象(Fundamental Objects)
这些是最基本的对象类型,是其他对象的基础。
对象 | 说明 |
---|---|
Object | 所有对象的基类,提供创建对象和操作属性的基本方法(如 Object.keys() , Object.assign() )。 |
Function | 函数对象的构造器,所有函数都是 Function 的实例。 |
Boolean | 布尔值的包装对象(通常使用原始值 true /false )。 |
Symbol | ES6 引入,用于创建唯一的、不可变的值,常用于对象属性键。 |
Error | 错误对象的基类,用于表示运行时错误。 |
EvalError | 表示 eval() 函数相关的错误(已废弃,但保留)。 |
RangeError | 当数值超出有效范围时抛出(如数组长度为负数)。 |
ReferenceError | 当引用一个不存在的变量时抛出。 |
SyntaxError | 当代码中存在语法错误时抛出。 |
TypeError | 当操作一个不适当类型的值时抛出(如调用非函数)。 |
URIError | 当 encodeURI() 或 decodeURI() 函数使用不当(如参数无效)时抛出。 |
二、数字和日期对象(Numbers and Dates)
用于处理数字和日期时间。
对象 | 说明 |
---|---|
Number | 数字的包装对象,提供数字常量(如 Number.MAX_SAFE_INTEGER )和转换方法(如 Number.parseInt() )。 |
Math | 提供数学常量和函数的静态对象(不能被实例化),如 Math.random() , Math.max() , Math.sin() 。 |
Date | 用于处理日期和时间的对象,可以创建、获取和操作日期。 |
三、字符串对象(String)
用于处理文本。
对象 | 说明 |
---|---|
String | 字符串的包装对象,提供字符串操作方法(如 split , indexOf , replace )。 |
RegExp | 正则表达式对象,用于匹配文本模式。通过 /pattern/ 或 new RegExp() 创建。 |
四、可索引集合对象(Indexed Collections)
用于存储有序的数据集合。
对象 | 说明 |
---|---|
Array | 数组对象,用于存储有序的元素列表,提供丰富的操作方法(如 push , map , filter )。 |
Int8Array , Uint8Array , Int16Array , Uint16Array , Int32Array , Uint32Array , Float32Array , Float64Array | 类型化数组(Typed Arrays),用于在二进制数据缓冲区(ArrayBuffer )上操作特定类型的数值。 |
ArrayBuffer | 用于表示通用的、固定长度的二进制数据缓冲区。 |
DataView | 提供从 ArrayBuffer 读取不同大小和类型的数值的底层接口,支持自定义字节序。 |
五、使用键的集合对象(Keyed Collections)
使用键来存储和访问值的集合。
对象 | 说明 |
---|---|
Map | 保存键值对,键可以是任意类型(包括对象),保持插入顺序。 |
Set | 保存唯一值的集合,值可以是任意类型,保持插入顺序。 |
WeakMap | Map 的弱引用版本,键必须是对象,当对象被垃圾回收时,对应的条目也会被移除。 |
WeakSet | Set 的弱引用版本,值必须是对象,当对象被垃圾回收时,对应的值也会被移除。 |
六、矢量集合(Vector Collections)
对象 | 说明 |
---|---|
SIMD | 单指令多数据(Single Instruction, Multiple Data)向量集合,用于并行处理多个数据(如 Float32x4 )。该 API 目前处于实验阶段,未被广泛支持。 |
七、结构化数据(Structured Data)
用于处理和传输结构化数据。
对象 | 说明 |
---|---|
JSON | 提供 JSON.stringify() 和 JSON.parse() 方法,用于在 JavaScript 对象和 JSON 字符串之间转换。 |
ArrayBuffer | (也属于可索引集合)用于表示二进制数据。 |
DataView | (也属于可索引集合)用于读取 ArrayBuffer 。 |
Atomics | 提供对共享内存(SharedArrayBuffer )进行原子操作的方法,用于多线程环境。 |
SharedArrayBuffer | 用于在多个 JavaScript 线程(如 Web Workers)之间共享内存。 |
八、控制抽象对象(Control Abstraction Objects)
用于处理异步操作和迭代。
对象 | 说明 |
---|---|
Promise | 表示一个异步操作的最终完成或失败,及其结果值。 |
GeneratorFunction | 生成器函数的构造器,通过 function* 创建。 |
AsyncFunction | 异步函数的构造器,通过 async function 创建。 |
Iterator | 迭代器协议的实现,通过 next() 方法访问集合中的下一个元素。 |
AsyncIterator | 异步迭代器协议的实现。 |
九、反射(Reflection)
对象 | 说明 |
---|---|
Proxy | 可用于定义基本操作的自定义行为(如属性查找、赋值、枚举、函数调用等)。 |
Reflect | 提供拦截 JavaScript 操作的方法,与 Proxy 方法一一对应,用于元编程。 |
十、国际化(Internationalization)
对象 | 说明 |
---|---|
Intl | 是一个命名空间,不是构造器。提供语言敏感的字符串比较(Collator )、数字格式化(NumberFormat )、日期时间格式化(DateTimeFormat )等功能。 |
总结
JavaScript 的内置对象构成了语言的核心功能体系:
- 基础对象:
Object
,Function
,Error
等。 - 数据处理:
Number
,String
,Boolean
,Symbol
,Math
,Date
。 - 集合:
Array
,Map
,Set
,WeakMap
,WeakSet
。 - 异步:
Promise
,Generator
,AsyncFunction
。 - 数据交换:
JSON
。 - 二进制数据:
ArrayBuffer
,TypedArray
,DataView
。 - 元编程:
Proxy
,Reflect
。 - 国际化:
Intl
。
理解这些内置对象及其用途,是掌握 JavaScript 编程的关键。
THE END