JS中對于不同的運行環(huán)境,有著不同的內(nèi)置宿主對象,這是由于JS是被作為一種擴展語言而設(shè)計的。對于通用程序設(shè)計語言,開發(fā)者必自己開發(fā)運行時的上下文環(huán)境。正因如此,那些語言才有了通用設(shè)計語言的名稱。另一方面,擴展語言是在內(nèi)建對象的應(yīng)用程序(宿主環(huán)境)中運行程序的。宿主應(yīng)用程序會在這時收到一些運行時的上下文信息。JS會以全局對象作為根節(jié)點的對象樹的形式,接收這些上下文信息。在啟動時,JS從宿主環(huán)境獲取的對象樹就被稱為宿主對象。從JS代碼的角度來看,全局對象在程序啟動前就已經(jīng)存在了,客戶端JS的全局對象被稱為Window對象。
瀏覽器對象模型(BOM),描述與瀏覽器進(jìn)行交互的方法和接口。
文檔對象模型(DOM),描述處理網(wǎng)頁內(nèi)容的方法和接口。
瀏覽器自身也被設(shè)計為一個對象集合的模型,我們可以使用這些瀏覽器對象來操作瀏覽器;
BOM對象不僅具有屬性、方法,還具有事件,在JS中通過事件處理器來處理事件。當(dāng)事件發(fā)生時,事件處理器將連接到相應(yīng)的事件處理代碼,不同的對象具有不同的事件。