上一篇提到 JS 的執行方式,這裡就順勢來說說,JS 執行時需要依賴的宿主環境(host environment)。
系統級的語言,例如 C 語言可以開發系統和製造環境,不過 JavaScript 無法做到這點,需要寄生在某個具體的環境中才能夠工作,這樣的環境稱為「宿主環境(host environment)」。
宿主環境是直譯型語言的特性之一,編譯型語言能夠直接產生用機器語言寫成的檔案,而不需要依賴外部環境,JS 恰好位於編譯與直譯之間,屬於即時編譯型。
宿主環境是由殼層(shell)創造的,常見的宿主環境如瀏覽器和桌面應用程式等,而宿主環境會提供宿主物件(Host / Host Object),作為與內部程序互動的接口。
殼層(shell)又稱外殼程式,是使用者和程式互動的介面軟體。
比如瀏覽器的 window
,以及 Node.js 自己的 global
,以上兩者都是宿主物件,而非 JS 原生的內容。一些常見的方法,如 console
、setTimeout
等,也都是宿主物件 window
的屬性。
window
物件)。與宿主物件相對,屬於 JS 自己提供的內容則稱為原生物件(Native object),也稱作本地物件(Local object)。
原生物件當中又包含內建物件(Built-in object),這部分後文會再說明。
除此之外,JS 也容許使用 new
關鍵字創造自定義物件(Custom Object),以擴充能夠執行的功能。