## 前言:
? 真正的JavaScript是由三部分組成,ECMAScript、DOM、BOM,如下圖所示。本文將主要介紹其中的瀏覽器對象模型。?BOM(Browser Object Mode) 是指瀏覽器對象模型,是用于描述這種對象與對象之間層次關系的模型,瀏覽器對象模型提供了獨立于內容的、可以與瀏覽器窗口進行互動的對象結構。BOM由多個對象組成,其中代表瀏覽器窗口的Window對象是BOM的頂層對象,其他對象都是該對象的子對象。

## 一、window對象
? BOM可以用來訪問和操作瀏覽器窗口的瀏覽器,開發人員可以使用它控制瀏覽器顯示頁面以外的部分。它提供了很多的對象,來幫助我們訪問瀏覽器。其中核心對象是window,它表示瀏覽器的一個實例。window對象處于JavaScript結構的最頂層,對于每個打開的窗口,都會有一個默認的window對象。

window對象的屬性:

window對象的方法:

? 在方法中有我們經常使用的alert(),confirm(),prompt()方法可以調用系統對話框向用戶顯示信息。因為window對象是一個全局對象,所以不需要在它的屬性和方法的面前加上window。相反,可以直接調用它們,就向我們已經在那些直接調用alert()方法的實例中見到的那樣。
應用舉例:
~~~
//確定和取消
if (confirm('請確定或者取消')) {
alert("確定要確定么?")
}
else {
alert("確定要取消么?")
}
~~~
? window對象的直接后代不需要window前綴,不過,當處理window對象的直接后代以外的對象時,則需要在它們前面加上window對象的名字。例如,document對象是window對象的直接后代,所以不需要window前綴,但是document對象的后代卻需要document前綴。
舉例如下:
~~~
alert('something'); //note no window
document.forms[0] //note the document
~~~
## 二、location對象
? location對象使我們能夠訪問當前載入的URI,包括任何有關查詢字符串、使用的協議以及其他相關組件的信息。
location屬性:


location方法:

應用舉例:
~~~
<span style="font-family:KaiTi_GB2312;font-size:18px;"><body>
? <script lang="javasctript" type="text/javascript">
? ? ? var body = document.getElementsByTagName("body")[0];
? ? ? for (var prop in navigator) {
? ? ? ? ? var elem = document.createElement("p");
? ? ? ? ? var text = document.createTextNode(prop + ":" + navigator[prop]);
? ? ? ? ? elem.appendChild(text);
? ? ? ? ? body.appendChild(elem);
? ? ? }
? ? ? if (location.search) {
? ? ? ? ? var querystring = localtion.search;
? ? ? ? ? var splits = querystring.splits('&');
? ? ? ? ? for (var i = 0; i < splits.length; i++) {
? ? ? ? ? ? ? var splitpair = splits[i].split('=');
? ? ? ? ? ? ? var elem = document.createElement("p");
? ? ? ? ? ? ? var text = document.createTextNode(splitpair[0] + ":" + splitpair[1]);
? ? ? ? ? ? ? elem.appendChild(text);
? ? ? ? ? ? ? body.appendChild(elem);
? ? ? ? ? }
? ? ? }
? </script>
</body></span>
~~~
## 三、history對象
? history對象提供了通過訪問者瀏覽歷史向前和向后移動的方法。具體的說,可以使用back()、forward()、go()。這可能不言而喻,但還要說明一下:back()和forward()分別向后和向前移動一個頁面,go()方法移動到參數指定的索引值。

應用實例:
~~~
function back()
{
history.back();
}
function forward()
{
history.forward();
}
<p><a href="#" onclick="return back();">Click to go back</a></p>
<p><a href="#" onclick="return forward();">Click to go forward</a></p>
~~~
## 四、小結
? ? ? 關于瀏覽器對象模型中幾個重要的對象,需要進一步實踐去掌握一些常用的屬性和方法。