1. 本地对象/原生对象(Native object)
定义:独立于宿主环境的 ECMAScript 实现提供的对象。包括如下:
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、ActiveXObject(服务器方面)、Enumerator(集合遍历类)、RegExp(正则表达式)
由此可以看出,简单来说,原生对象就是 ECMA-262 定义的类(引用类型)。
2. 内置对象(Built-in object)不需要new
定义:由 ECMAScript 实现提供的对象,独立于宿主环境,在一个脚本程序执行的开始处。
注:每个内置对象 (Built-in object)都是原生对象(Native Object),一个内置的构造函数是一个内置的对象,也是一个构造函数。
ECMA-262 只定义了两个新的内置对象,即 Global 和 Math (它们也是原生对象,根据定义,每个内置对象都是原生对象)。包括如下:
global、Object、Function、Array、String、Boolean、Number、Math、Date、RegExp、JSON、Error对象(Error,EvalError, RangeError, ReferenceError, SyntaxError, TypeError 和URIError)
3. 宿主对象(Host objects)
定义:所有的非本地对象都是宿主对像
例:所有 BOM 和 DOM 对象都是宿主对象。
【JavaScript对象】
Array、Boolean、Date、Math、Number、String、RegExp、Global
【BOM对象】
Window、Navigator、Screen、History、Location
【DOM对象】
Document、Anchor、Area、Base、Body、Button、Canvas、Event、Form、Frame、Frameset、IFrame、Image、Input Button、Input Checkbox、Input File、Input Hidden、Input Password、Input、Radio、Input Reset、Input Submit、Input Text、Link、Meta、Object、Option、Select、Style、Table、TableCell、TableRow、Textarea