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」