代码改变世界

【javascript基础】之【宿主环境】

2011-10-27 11:35  sniper007  阅读(2576)  评论(0编辑  收藏  举报

《JavaScript征途》第1章与初学者谈谈JavaScript学习,本章从几个简单的概念说起,探析 了JavaScript语言的基本特性,介绍JavaScript语言发展历史、派系,以及与客户端、浏览器之间的关系;此外,还专题讨论了 JavaScript运行环境、JavaScript解析机制、JavaScript执行顺序、JavaScript应用范围和JavaScript开发 工具。本节为大家介绍宿主环境。

AD:

 

1.4  JavaScript运行环境

语言和环境是两个不同的概念,提及JavaScript,你可能会想到浏览器。没错,浏览器是JavaScript语言的摇篮,也是它的栖息地之 一。脱离了环境,JavaScript代码是不能够运行的,学习JavaScript语言也失去了应用的价值。这与其他系统级的语言有着很大的不同。例 如,C语言可以开发系统,制造环境,而JavaScript只能够寄生在某个具体的环境中才能够工作。

JavaScript运行环境一般都由宿主环境和执行期环境共同构成。其中宿主环境是由外壳程序生成的,如Web浏览器就是一个外壳程序,它提供了 一个可控制浏览器窗口的宿主环境。执行期环境则由嵌入到外壳程序中的JavaScript引擎(或称为JavaScript解释器)生成,在这个环境中 JavaScript能够生成内置静态对象,初始化执行环境等(如图1-2所示)。

 
(点击查看大图图1-2  JavaScript运行环境

1.4.1  宿主环境

宿主环境一般由外壳程序创建和维护,它不仅仅为JavaScript语言提供服务,往往一个宿主环境中可能运行很多种脚本语言。这与Java虚拟机功能类似,你可能知道Java和.NET都以虚拟机的方式提供了一种跨语言和跨平台的宿主环境,也就是所谓的虚拟执行环境。

宿主环境一般会创建一套公共对象系统,这套对象系统对所有脚本语言开放,并允许它们自由访问。同时,宿主环境还会提供公共接口,用来装载不同的脚本语言引擎。这样我们可以在同一个宿主环境中装载不同的脚本引擎,并允许它们共享宿主对象。

脚本语言与独立的语言是有区分的,JavaScript是一种脚本语言,它本身不提供IO(输入和输出)接口,也没有与系统和外界通信的能力,更不 能够完成外围设备、管理内存、修改注册表等更低级的行为,这些功能全部交给了宿主环境来完成。例如,在客户端浏览器(外壳程序)的宿主环境 中,JavaScript通过window对象的alert()方法和document对象的write()和writeln()输出信息,而借助 window对象的prompt()方法接收信息。当然,在其他宿主环境中可能会使用不同的宿主对象来完成,例如,在Windows环境中,微软开发的 WSH(Windows Script Host)就是一种脚本语言的宿主环境,它就定义了wscript对象(类似window对象)以表示全局对象。

外壳程序不仅仅是Web浏览器,只要能够提供JavaScript引擎执行的环境都可以算做外壳程序。很多服务器、桌面应用系统也都提供能够允许 JavaScript引擎执行的运行环境,这些运行环境也是宿主环境。同时,大部分JavaScript引擎自身也带有一个用于代码调试的程序,这个简单 的程序被运行时,也会创建一个宿主环境。

另外,外壳程序还可以通过符合标准的扩展接口接纳更多的插件、组件或ActiveX控件等.DLL扩展应用。例如,Web浏览器自定义的DOM组 件,这个符合W3C标准的DOM组件就是通过宿主环境实现与JavaScript引擎进行联系的,允许JavaScript引擎对其进行控制,并通过 DOM组件实现对HTML或XML文档的操作。