shoutingwei / frontend-learning

0 stars 0 forks source link

本地对象/原生对象(Native Object),内置对象,宿主对象 #53

Open shoutingwei opened 6 years ago

shoutingwei commented 6 years ago

本地对象/原生对象(Native Object) 本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。“宿主”简单说,就是环境,包括操作系统和浏览器。

“本地对象”包含:

Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError

本地对象就是 ECMA-262 定义的类(引用类型)。

内置对象(Built-in Object)引擎初始化时就创建(原生对象的子集) 内置对象(built-in object)定义为“由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。

两个内置对象,即 Global 和 Math (它们也是本地对象,每个内置对象都是本地对象)。

Global对象是ECMAScript中最特别的对象,global不能直接访问,而window只是指向global的引用。

类似于isNaN()、parseInt()和parseFloat()方法等,看起来都是函数,而实际上,它们都是Global对象的方法。而且Global对象的方法还不止这些

宿主对象 宿主对象(host object)就是所有非本地对象,即由 ECMAScript 实现的宿主环境提供的对象。

宿主对象不是引擎的原生对象,而是由宿主框架通过某种机制注册到JavaScript引擎中的对象。

所有的BOM和DOM对象都是宿主对象。因为其对于不同的“宿主”环境所展示的内容不同。其实说白了就是,ECMAScript官方未定义的对象都属于宿主对象,因为其未定义的对象大多数是自己通过ECMAScript程序创建的对象。