首页 > 代码库 > js高级---本地对象、内置对象、宿主对象
js高级---本地对象、内置对象、宿主对象
名词参考:
原生对象:也叫内部对象、本地对象、native object
内置对象:Build-in object
宿主对象:host object
ECMA-262 定义:
原生对象:独立于宿主环境的ECMAScript实现提供的对象。与宿主无关,在javascript(远景浏览器)、nodejs(node平台)、jscript(ie浏览器)、typescript(微软平台)等等中均有这些对象。简单来说,本地对象就是 ECMA-262 定义的类(引用类型)。在运行过程中动态创建的对象,需要new
内置对象:由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现,即在引擎初始化阶段就被创建好的对象。这意味着开发者不必明确实例化内置对象,它已被实例化了
宿主对象:即由 ECMAScript 实现的宿主环境提供的对象,包含两大类,一个是宿主提供,一个是自定义类对象,ECMAScript官方未定义的对象都属于宿主对象,所有非本地对象都是宿主对象。宿主提供对象原理--->由宿主框架通过某种机制注册到ECscript引擎中的对象,如宿主浏览器(以远景为参考)会向ECscript注入window对象,构建其实现javascript。。
内容
原生对象:Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
内置对象:Global(全局对象)、Math
宿主对象:---->在浏览器中window对象以及其下边所有的子对象(如bom、dom等等),在node中是globla及其子对象,也包含自定义的类对象。
其它对象:全局对象--->是内置对象的一个。自定义对象--->它属于宿主对象
它们之间的关系
本地对象与内置对象:原生包含内置,内置是原生的一个子集。
宿主对象:内置对象的Global,就是宿主的顶层对象,如在浏览器中是window、在nodejs中是global
特别说明:
内置对象之Global
Global即为全局对象,Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在!
在ECMAScript中,不存在独立的函数,所有函数都必须是某个对象的方法。
类似于isNaN()、parseInt()和parseFloat()方法等,看起来都是函数,而实际上,它们都是Global对象的方法。
而且Global对象的方法还不止这些。具体参考http://www.w3school.com.cn/jsref/jsref_obj_global.asp
而且根据我目前没有定论的推断,Global对象与宿主有关,是宿主的顶层对象。比如在javascript中,Global对象即为window对象,以下代码即可测试出
<script> var str=‘hello‘; //用宿主对象去 调用内置对象的函数 console.log(window.isNaN(str))</script>
由此可以推测出,当宿主为nodejs时候,nodejs的顶层对象是global,那么这样肯定不会报错--global.isNaN(str)
拓展方法内容
无论是什么对象,均可以通过prototype进行功能拓展。
js高级---本地对象、内置对象、宿主对象