## 介绍 js 有哪些内置对象? #### 涉及知识点: 全局的对象(`global objects`)或称标准内置对象,不要和 "全局对象(`global object`)" 混淆。这里说的全局的对象是说在 全局作用域里的对象。全局作用域中的其他对象可以由用户的脚本创建或由宿主程序提供。 标准内置对象的分类 (1)值属性,这些全局属性返回一个简单值,这些值没有自己的属性和方法。 例如 `Infinity`、`NaN`、`undefined`、`null` 字面量 (2)函数属性,全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。 例如 `eval()`、`parseFloat()`、`parseInt()` 等 (3)基本对象,基本对象是定义或使用其他对象的基础。基本对象包括一般对象、函数对象和错误对象。 例如 `Object`、`Function`、`Boolean`、`Symbol`、`Error` 等 (4)数字和日期对象,用来表示数字、日期和执行数学计算的对象。 例如 `Number`、`Math`、`Date` (5)字符串,用来表示和操作字符串的对象。 例如 `String`、`RegExp` (6)可索引的集合对象,这些对象表示按照索引值来排序的数据集合,包括数组和类型数组,以及类数组结构的对象。例如 `Array` (7)使用键的集合对象,这些集合对象在存储数据时会使用到键,支持按照插入顺序来迭代元素。 例如 `Map`、`Set`、`WeakMap`、`WeakSet` (8)矢量集合,`SIMD` 矢量集合中的数据会被组织为一个数据序列。 例如 `SIMD` 等 (9)结构化数据,这些对象用来表示和操作结构化的缓冲区数据,或使用 JSON 编码的数据。 例如 `JSON` 等 (10)控制抽象对象 例如 `Promise`、`Generator` 等 (11)反射 例如 `Reflect`、`Proxy` (12)国际化,为了支持多语言处理而加入 `ECMAScript` 的对象。 例如 `Intl`、`Intl.Collator` 等 (13)`WebAssembly` (14)其他 例如 `arguments` #### 回答: js 中的内置对象主要指的是在程序执行前存在全局作用域里的由 js 定义的一些全局值属性、函数和用来实例化其他对象的构造函 数对象。 一般我们经常用到的如全局变量值 `NaN`、`undefined`,全局函数如 `parseInt()`、`parseFloat()` 用来实例化对象的构造函数如 `Date`、`Object` 等,还有提供数学计算的单体内置对象如 `Math` 对象。 #### 详细资料可以参考: * [《标准内置对象的分类》](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects) * [《JS 所有内置对象属性和方法汇总》](https://segmentfault.com/a/1190000011467723#articleHeader24)