文章目錄
- 一、BOM 瀏覽器對象模型 簡介
- 1、BOM 簡介
- 2、常用的 BOM 對象
- 3、BOM 特點
- 4、BOM 瀏覽器對象模型 與 DOM 文檔對象模型 對比
- 二、window 對象簡介
- 1、window 對象作用
- 2、全局屬性
- 3、全局方法
- 4、完整代碼示例
一、BOM 瀏覽器對象模型 簡介
1、BOM 簡介
瀏覽器對象模型 ( BOM , Browser Object Model ) 提供了 JavaScript 與 瀏覽器窗口 進行交互的 對象集合 , BOM 沒有統一標準 , 但是 主流瀏覽器 Chrom、Firefox、Edge 廣泛兼容 BOM 核心 API ;
BOM 核心作用 是 JavaScript 與 瀏覽器窗口 進行交互 , DOM 的核心作用 是 JavaScript 操作 頁面內容 ;
2、常用的 BOM 對象
BOM 瀏覽器對象模型 比 DOM 文檔對象模型 更大 , BOM 包含 DOM ;
常用的 BOM 對象 : BOM 由 一系列 相關的對象 構成 , 並且 每個對象 都提供了很多 方法 與 屬性 ;
- window 對象 : 全局作用域
- location 對象 : 管理 URL , 獲取 或 跳轉頁面 ;
- navigator 對象 : 獲取 瀏覽器 和 設備信息 ;
- screen 對象 : 獲取 用户屏幕 相關信息 ;
- history 對象 : 操作 瀏覽歷史記錄 ;
3、BOM 特點
BOM 特點 :
- 無統一標準 : 早期 無 W3C 規範 , 由 瀏覽器廠商 各自實現 , 之後隨着發展 逐步趨同 , 各個瀏覽器廠商 主動兼容 BOM 核心 API ;
- 以 window 為頂層對象 : 所有 BOM 對象、全局變量、全局函數 都是 window 的屬性 , 可省略
window.前綴 ; - 與瀏覽器環境強關聯 : 功能 圍繞 瀏覽器窗口 ( 如導航、尺寸、存儲、歷史記錄等 )
4、BOM 瀏覽器對象模型 與 DOM 文檔對象模型 對比
|
對比維度 |
BOM ( 瀏覽器對象模型 ) |
DOM ( 文檔對象模型 ) |
|
核心定義 |
用於 操作 瀏覽器窗口 及 運行環境
|
用於 操作 HTML/XML 文檔內容 與 結構 的 對象集合
|
|
操作對象 |
瀏覽器窗口、導航、歷史記錄、本地存儲、屏幕信息 等 ( 與瀏覽器環境強關聯 )
|
文檔元素 ( div/p/img 等 ) 、屬性、文本、節點結構 等 ( 與頁面內容強關聯 )
|
|
標準歸屬 |
無統一官方標準
|
W3C 標準化規範
|
|
頂層對象 |
|
|
|
核心作用 |
實現 JavaScript 與 瀏覽器 的交互
|
實現 JavaScript 與 頁面 內容的 交互
|
|
適用環境 |
僅 瀏覽器環境
|
瀏覽器環境 + 部分非瀏覽器環境
|
|
常用核心 API |
|
|
|
數據持久化 |
支持 ( |
不直接支持 ( 需通過 DOM 操作修改文檔內容 , 或結合 BOM 存儲實現持久化 )
|
|
跨域限制 |
受同源策略限制 ( 如 |
受同源策略限制 ( 如跨域文檔無法通過 DOM 訪問內容 )
|
|
兼容性 |
核心 API 主流瀏覽器兼容 , 但部分擴展 API 存在差異 ( 如早期 IE 對部分 BOM 方法支持有限 )
|
標準化程度高 , 主流瀏覽器兼容性一致 ( 僅極舊瀏覽器如 IE8 存在少量差異 )
|
|
典型使用場景 |
頁面跳轉 / 刷新、瀏覽器信息判斷、本地數據存儲、窗口尺寸控制、歷史記錄操作
|
元素查找 / 修改、表單數據處理、頁面結構動態渲染、事件綁定 ( 點擊 / 輸入等 )
|
二、window 對象簡介
1、window 對象作用
BOM 中的 window 對象
- 交互接口 : JavaScript 通過 BOM 可以與 瀏覽器窗口 進行交互
- 全局對象 : window 是一個全局對象
全局作用域的 方法 和 屬性 在調用時可以省略 window. 前綴 ;
window 對象中有很多 方法 和 屬性
// 訪問 window 對象 , 將其所有的 屬性方法 結構 打印到控制枱
console.dir(window);
2、全局屬性
BOM 中的 window 對象 , 包含 DOM 的頂層對象 document , document 是 window 對象的一個屬性值 ;
查找對象時使用 document.querySelector() , 前面的 window. 前綴 可以省略 , 完整的寫法是 window.document.querySelector() ;
// BOM 中的 window 對象 , 包含 DOM 的頂層對象 document ;
// window 是最頂層的對象 , 通常可以省略 ;
// 訪問 document 可以 省略 window. 前綴 ;
console.log(document);
// 訪問 document 對象的完整寫法
console.log(window.document);
在 JavaScript 中 , 全局對象 自動變成 window 對象的屬性 , 如 定義 var num = 10 全局變量 , 可以使用 num 訪問該變量 , 也可以使用 window.num 訪問該變量 ;
// 在 JavaScript 中 , 全局對象 自動變成 window 對象的屬性
var num = 10;
// 省略 window. 前綴的寫法
console.log(num);
// 完整訪問 window 全局屬性 的 寫法
console.log(window.num);
3、全局方法
在 JavaScript 中 , 全局函數 自動變成 window 對象的方法 , 訪問時可以省略 window. 前綴 ;
定義一個函數 fn , 會自動將其變成 window 對象的方法 , 可以省略 window. 前綴 直接使用 fn() 調用該函數 , 也可以使用 window.fn() 完整寫法訪問 該函數 ;
function fn() {
console.log(888);
}
alert() 函數是 window 對象的方法 , 訪問時可以省略 window. 前綴 alert(1) , 也可以使用 完整寫法 window.alert(1) ;
部分代碼示例 :
// 在 JavaScript 中 , 全局函數 自動變成 window 對象的方法 , 訪問時可以省略 window. 前綴
function fn() {
console.log(888);
}
// 省略 window. 前綴的寫法
fn();
// 完整訪問 window 全局方法 的 寫法
window.fn();
// alert() 函數是 window 對象的方法 , 訪問時可以省略 window. 前綴
alert(`alert 省略 window. 前綴寫法`);
// 完整訪問 window 對象的 alert() 方法 的 寫法
window.alert(`alert 帶 window. 前綴寫法`)
4、完整代碼示例
代碼示例 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>BOM 頂級對象 window</title>
</head>
<body>
<script>
// BOM 中的 window 對象 , 包含 DOM 的頂層對象 document ;
// window 是最頂層的對象 , 通常可以省略 ;
// 訪問 document 可以 省略 window. 前綴 ;
console.log(document);
// 訪問 document 對象的完整寫法
console.log(window.document);
// 在 JavaScript 中 , 全局對象 自動變成 window 對象的屬性
var num = 666;
// 省略 window. 前綴的寫法
console.log(num);
// 完整訪問 window 全局屬性 的 寫法
console.log(window.num);
// 在 JavaScript 中 , 全局函數 自動變成 window 對象的方法 , 訪問時可以省略 window. 前綴
function fn() {
console.log(888);
}
// 省略 window. 前綴的寫法
fn();
// 完整訪問 window 全局方法 的 寫法
window.fn();
// alert() 函數是 window 對象的方法 , 訪問時可以省略 window. 前綴
alert(`alert 省略 window. 前綴寫法`);
// 完整訪問 window 對象的 alert() 方法 的 寫法
window.alert(`alert 帶 window. 前綴寫法`)
// 訪問 window 對象 , 將其所有的 屬性方法 結構 打印到控制枱
console.dir(window);
</script>
</body>
</html>
執行結果 :