BOM:BrowserObjectModel,瀏覽器對象模型,提供JS中對瀏覽器的各種操作的對象,是JS應用中唯一沒有相關標準的部分,這事BOM經常出現問題的所在,主要用于處理瀏覽器窗口與框架,瀏覽器特有的JS擴展也被默認為BOM的一部分,而各瀏覽器之間的公有對象就成了默認的標準。本篇文章將主要介紹window對象。

## 屬性
世界上本沒有模型,用的多了也就成了模型。模型便是一個可供參考的東西,BOM中的一系列通用的對象便構成了這個模型,其結構可展示為:
window的六大屬性,同時它們也是對象:
document主要操作web加載的網頁文檔;
frames為窗口框架對象數組;
history保存用戶上網記錄;
location提供加載的文檔有關信息以及控制頁面跳轉;
navigator對象存儲瀏覽器名稱及版本信息;
screen顯示屏幕相關信息。
其中document對象屬性下也有幾個重要的屬性對象,以document為核心的對文檔進行操作的各個對象組成的結構便是大家所熟悉的DOM,從這一點看來,DOM其實是BOM的一個子集.
window對象除了提供了旗下的六大對象屬性外,還擁有設置瀏覽器信息的一些基本屬性,主要如下

我們經常需要過去瀏覽器的位置及大小信息,由于BOM沒有統一的標準,針對不同瀏覽器會有不同的屬性進行實現,這時候我們就需要做些跨瀏覽器的兼容性操作,使得針對不同瀏覽器都能夠獲取對象的數據。
通過使用typeof屬性來判斷瀏覽器是否支持對應的屬性,進而采用不同的措施便是很好的兼容性操作的方法,以后可針對具體情況進行應用。
## 方法
window對象提供的幾個主要方法如下圖:

圖中對方法進行了簡單的分類,每個方法再往下分便是參數了,返回值依各自的情況不同而不同。見名知意,方法名也不例外,看到了這些方法的名稱,其實際作用估計也已猜到了一半,在此便不再詳細說明。
window對象也提供了另外的一些方法:focus()/blur()、對應open()的close()方法、scroll()滾動至指定像素點位置、print()/find()分別調出打印對話框以及查找對話框。
## 總結
BOM,實際上是一組對象的集合,而window是這組對象的核心,了解了它,對整個瀏覽器對象模型也就有了結構以及作用上的認識。