面试题:JavaScript 有哪些内置对象?

JavaScript 提供了一系列内置对象(Built-in Objects),它们由 ECMAScript 规范定义,在 JavaScript 引擎启动时自动创建,无需额外引入。这些对象为开发者提供了处理数据、执行操作和与环境交互的核心功能。

内置对象可以分为以下几大类:


一、基础对象(Fundamental Objects)

这些是最基本的对象类型,是其他对象的基础。

对象说明
Object所有对象的基类,提供创建对象和操作属性的基本方法(如 Object.keys(), Object.assign())。
Function函数对象的构造器,所有函数都是 Function 的实例。
Boolean布尔值的包装对象(通常使用原始值 true/false)。
SymbolES6 引入,用于创建唯一的、不可变的值,常用于对象属性键。
Error错误对象的基类,用于表示运行时错误。
EvalError表示 eval() 函数相关的错误(已废弃,但保留)。
RangeError当数值超出有效范围时抛出(如数组长度为负数)。
ReferenceError当引用一个不存在的变量时抛出。
SyntaxError当代码中存在语法错误时抛出。
TypeError当操作一个不适当类型的值时抛出(如调用非函数)。
URIErrorencodeURI()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保存唯一值的集合,值可以是任意类型,保持插入顺序。
WeakMapMap 的弱引用版本,键必须是对象,当对象被垃圾回收时,对应的条目也会被移除。
WeakSetSet 的弱引用版本,值必须是对象,当对象被垃圾回收时,对应的值也会被移除。

六、矢量集合(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
喜欢就支持一下吧
点赞9 分享