JavaScript的应用环境,主要是宿主环境(host environment)和运行期环境构成。其中,宿主环境是指外壳程序(Shell)和Web浏览器等,而运行期环境则是由JavaScript引擎内建的。web
宿主环境浏览器
宿主环境是为了隔离代码、语言与具体的平台而提出的一种设计。一方面咱们不能让浏览器拥有一个巨大无比的运行期环境(虚拟机就是拥有特别大的运行期环境的一个平台),另外一方面服务器端又须要较强大的环境,由此JavaScript就被设计为“宿主环境”的语言。服务器
ECMAScript规范没有对宿主环境提出明确的定义。即没有对它提出标准的输入(stdin)或者输出(stdout)到哪个具体的对象中。后来,RWC在webAPIs规范中首先提出了“须要一个Window对象”的浏览器环境。由此意味着在RWC或者浏览器端,是以window对象及其中的Document对象来提供输入输出。但“RWC规范下的宿主环境”并不等于“JavaScript规范下的宿主环境”ide
方法spa |
含义设计 |
|
Alter(sMessage)orm |
显示一个消息文本(字符串),并等待用户一次响应。调用者将忽略响应的返回信息对象 |
|
Write(sText,...)blog |
输出一段文本,多个参数将被链接成单个字符串文本。ip |
|
WriteIn(sText,...) |
(同write)输出一段文本,多个参数被链接成单个字符串文本,并在文本末尾追加一个换行符(\n) |
备注:write()与writeIn在浏览器中是Document对象的方法。
外壳程序
外壳程序是宿主的一种。
运行期环境
不一样的书对其定义的解释也不一致:
例如《JavaScript权威指南》里,它由JavaScript内核(core)和客户端(client)JavaScript两部分来组成;
而《JavaScript高级程序设计》中,它又是由核心ECMAscript、文档对象模型(DOM)、浏览器对象模型(BOM)三部分来组成的。
在初始状态下的运行期环境主要包括:
一个对宿主的约定
一个引擎内核
一组对象和API
一些其余的规范
常见的JavaScript引擎
引擎 |
应用 |
语言 |
备注 |
SpiderMonkey |
Mozilla |
C |
|
JavaScriptCore |
Safari |
C++ |
基于KDE发布的KJS,由Apple公司支持 |
Rhino |
Java |
Java |
主要应用于IBM、Sun等的Java平台 |
JScript |
Windows |
Windows环境,以及IE |
|
Narcissus |
JavaScript |
备注* |
备注*:Brendan Eich为验证JavaScript语言的自我实现能力而写的一套代码,被称为“JS implemented in JS”