在 ECMAScript 中,全部对象并不是同等建立的。通常来讲,能够建立并使用的对象有三种:本地对象、内置对象和宿主对象。javascript
要理解这三种对象,先要理解宿主环境。java
通常宿主环境由外壳程序建立与维护,只要能提供js引擎执行的环境均可称之为外壳程序。node
如:web浏览器,一些桌面应用系统等。即由web浏览器或是这些桌面应用系统构成的环境即宿主环境。python
在python中相似于python解释器。web
独立于宿主环境的ECMAScript提供的对象。与宿主环境无关,在javascript(网景浏览器)、nodejs(node平台)、jscript(ie浏览器)、typescript(微软平台)等等中均有这些对象。typescript
简单来讲,本地对象就是 ECMA-262 定义的类(引用类型或原始类型)。在运行过程当中动态建立的对象,须要new。数组
在python中相似原生对象,如:数字、字符串、列表、元组、字典、类。浏览器
由 ECMAScript 实现提供的、独立于宿主环境的全部对象,在 ECMAScript 程序开始执行时出现,即在引擎初始化阶段就被建立好的对象。框架
这意味着开发者没必要明确实例化内置对象,它已被实例化了。jvm
在python中的内建对象,好比sys、os、math等模块。
即由 ECMAScript 实现的宿主环境提供的对象,包含两大类,一个是宿主提供,一个是自定义类对象,ECMAScript官方未定义的对象都属于宿主对象,全部非本地对象都是宿主对象。
宿主提供对象原理--->由宿主框架经过某种机制注册到ECscript引擎中的对象,如宿主浏览器(以网景为参考)会向ECscript注入window对象,构建其实现javascript。
宿主对象就是执行JS脚本环境提供的对象。对于嵌入到网页中的JS来讲,其宿主对象就是浏览器提供的对象,因此又称为浏览器对象,如IE、Firefox等浏览器提供的对象。不一样的浏览器提供的宿主对象可能不一样,即便提供的对象相同,其实现方式也截然不同!这会带来浏览器兼容问题,增长开发难度。
浏览器对象有不少,如Window和Document等等。
有点相似python中的各类*ython,好比:Python,Cython,Jython,IRONpython。其实就是为运行python脚本而提供的专有环境。
一、PYTHON,CYTHON
将这两个放在一块儿,是由于python的标准和原始实现就是基于cython的,因为python的源代码是须要将python源码首先编译为c代码,而后再编译为本机代码的方式运行的,因为c语言和本机代码的关系,执行速度比较快。
二、JYTHON
首先将python编译为基于java字节码的字节码文件,而后在java虚拟机jvm上运行java字节码。
三、IRONpython
将python编译为基于.NET的CLI的中间语言文件,而后在CLR上运行。
五、自定义对象
顾名思义,就是开发人员本身定义的对象。JS容许使用自定义对象,使JS应用及功能获得扩充。
简单来讲,本地对象就是 ECMA-262 定义的类(引用类型)。有如下这些:
经常使用对象:
String对象
Array对象
Date对象
Number对象
Function对象
RexExp对象
Global对象
Math对象
DOM对象
BOM对象