js宿主对象和原生对象的区别?
原生对象
ECMA-262 把本地对象(native object)定义为“独立于宿主环境的ECMAScript 实现提供的对象”
“本地对象”包含哪些内容:Object、Function、Array、String、Boolean、Number、 Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、 URIError
由此可以看出,本地对象就是 ECMA-262 定义的类(引用类型)
内置对象
ECMA-262 把内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明 确实例化内置对象,它已被实例化了
同样是“独立于宿主环境”。根据定义我们似乎很难分清“内置对象”与“本地对象”的 区别。而ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象, 根据定义,每个内置对象都是本地对象)。如此就可以理解了。内置对象是本地对象的一 种
宿主对象
何为“宿主对象”?主要在这个“宿主”的概念上,ECMAScript 中的“宿主”当然就是我们网页的运行环境,即“操作系统”和“浏览器”
所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供 的对象。所有的 BOM 和 DOM 都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ECMAScript 官方未定义的对象都属于宿主对象,因为其未定 义的对象大多数是自己通过 ECMAScript 程序创建的对象
浙公网安备 33010602011771号