宿主环境:宿主环境由外壳程序创建与维护,只要能提供 js 引擎执行的环境都可以称之为外壳程序。如:web浏览器,桌面应用系统等。即由 web 浏览器或是这些桌面应用系统造就的环境叫做宿主环境
本地对象:ECMA 把本地对象(native object)定义为独立于宿主环境的 ECMAScript 实现提供的对象。
eg:Object、Function、Array、String、Boolean、Number等等
内置对象:ECMA 把内置对象(built-in object)定义为由 ECMAScript 实现提供的、独立于宿主环境的所有对象、在ECMAScript 程序开始执行时出现(即该类型的对象不用明确实例化,它已经被实例化了)。
这样说来:本地对象和宿主对象好像没什么分别,都是独立于宿主环境,由 ECMAScript 实现提供的对象,但是 ECMA 只定义了两个内置对象,即 Global 和 Math,他们也是本地对象,所以根据定义可以说每个内置对象都是本地对象
宿主对象:由 ECMAScript 实现的宿主环境提供的对象,可以理解为:浏览器提供的对象。所有的 BOM 和 DOM 都是宿主对象。