1. 在JavaScript中, 所有对象并非同等创建的。
2. 一般来说, 可以创建并使用的对象有三种: 本地对象、内置对象和宿主对象。
3. 本地对象
3.1. JavaScript把本地对象(native object)定义为"独立于宿主环境的ECMAScript实现提供的对象"。简单来说, 本地对象就是ECMAScript定义的类(需要用户实例化)。它们包括:
- Object
- Function
- Array
- String
- Boolean
- Number
- Date
- RegExp
- Error
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
4. 内置对象
4.1. JavaScript把内置对象(built-in object)定义为"由ECMAScript实现提供的、独立于宿主环境的所有对象, 在ECMAScript程序开始执行时出现"。这意味着开发者不必明确实例化内置对象, 它已被实例化了。ECMAScript只定义了两个内置对象, 即Global和Math(它们也是本地对象, 根据定义, 每个内置对象都是本地对象)。
4.2. Global对象可以说是ECMAScript中最特别的一个对象了, 因为不管你从什么角度上看, 这个对象都是不存在的(我们可以不纠结它)。
5. 宿主对象
5.1. 所有非本地对象都是宿主对象(host object), 即由JavaScript实现的宿主环境(浏览器)提供的对象。
5.2. 所有BOM和DOM对象都是宿主对象。