JavaScript的應用環境,主要是宿主環境(host environment)和運行期環境構成。其中,宿主環境是指外殼程序(Shell)和Web瀏覽器等,而運行期環境則是由JavaScript引擎內建的。
宿主環境
宿主環境是爲了隔離代碼、語言與具體的平臺而提出的一種設計。一方面我們不能讓瀏覽器擁有一個巨大無比的運行期環境(虛擬機就是擁有特別大的運行期環境的一個平臺),另一方面服務器端又需要較強大的環境,由此JavaScript就被設計爲“宿主環境”的語言。
ECMAScript規範沒有對宿主環境提出明確的定義。即沒有對它提出標準的輸入(stdin)或者輸出(stdout)到哪一個具體的對象中。後來,RWC在webAPIs規範中首先提出了“需要一個Window對象”的瀏覽器環境。由此意味着在RWC或者瀏覽器端,是以window對象及其中的Document對象來提供輸入輸出。但“RWC規範下的宿主環境”並不等於“JavaScript規範下的宿主環境”
方法 | 含義 | |
Alter(sMessage) | 顯示一個消息文本(字符串),並等待用戶一次響應。調用者將忽略響應的返回信息 | |
Write(sText,...) | 輸出一段文本,多個參數將被連接成單個字符串文本。 | |
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”