不妨這樣去理解JavaScript中的dom和bom
JavaScript是由三大部分組成:核心ECMAScript、文件物件模型-DOM
、瀏覽器物件模型-BOM
。
這裡我們主要來講解下BOM
和DOM
。
一. DOM
JavaScript可以通過DOM來獲取文件裡的標籤、屬性等內容,也可以用來操控文件內容
Document
文件,這裡的文件指的是XML和HTML的頁面。當你建立一個頁面並且載入到瀏覽器中,DOM就悄然而生。
Object
在學習JavaScript過程中,你一定頻繁地聽過這樣一句話“一切皆為物件”。我們可以把JavaScript中的物件分為三種:
- 使用者自定義物件,如let o = {}
- 內建物件,無需我們自己建立,如Array、String、Math等。
- 宿主物件,這裡指的是瀏覽器提供的物件,如Document和Window。
Model
顧名思義,就是模型的意思。
DOM把文件表示為一棵樹,有一個主幹和無數的子分支。如,
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Hello World!</h1>
<p>歡迎觀看本次文章,包含以下內容:</p>
<ul>
<li>ECMAScript</li>
<li>DOM</li>
<li>BOM</li>
</ul>
</body>
</html>
可抽象成DOM樹:
二. BOM
BOM提供了與瀏覽器互動的方法。如,
- 移動、縮放和關閉瀏覽器視窗的功能
- 提供瀏覽器詳細資訊的 navigator 物件
- 提供瀏覽器所載入頁面的詳細資訊的 location 物件
- 提供使用者顯示器解析度詳細資訊的 screen 物件
- 對 cookies 的支援
- 像 XMLHttpRequest 和 IE 的 ActiveXObject 這樣的自定義物件
W3C把瀏覽器中 JavaScript 最基本的部分標準化,已經將 BOM 的主要方面納入了 HTML5 的規範中。
三. 總結
JavaScript不光包括核心的ECMAScript,還包括用於操控文件的Dom和用於操控瀏覽器的Bom。
Dom主要用來操控(新增、刪除、修改、查詢)html文件標籤,而bom主要用來跟瀏覽器進行互動。此外,在學習DOM時,還應關注DOM事件傳遞機制,具體文章《從八道面試題看JavaScript DOM事件機制》
BOM可用來:
// navigator檢測瀏覽器型別
var ua = navigator.userAgent
var isChrome = ua.indexOf('Chrome')
console.log(isChrome)
// screen獲取螢幕大小
console.log(screen.width)
console.log(screen.height)
//location獲取url
console.log(location.href); //整個URL; http://www.jianshu.com/
console.log(location.host) // www.jianshu.com
console.log(location.protocol); //協議 http https
console.log(location.pathname); //域名之後的路徑; writer#/
console.log(location.search); // 問號後面的查詢字串
console.log(location.hash); // 雜湊
//history獲取瀏覽歷史
history.back();
history.forward();
四. 參考
https://blog.csdn.net/xiao__gui/article/details/8315148
https://juejin.im/post/5bf24cf851882511a852803d
相關文章
- 理解JavaScript中BOM和DOM的關係JavaScript
- JavaScript DOM、BOM操作JavaScript
- bom和dom就看這張圖
- JavaScript的組成 | DOM/BOMJavaScript
- JavaScript(ECMAScript+BOM+DOM)JavaScript
- javaScript事件,Bom,Dom物件JavaScript事件物件
- DOM和BOM
- 前端基礎之BOM和DOM前端
- BOM與DOM之DOM操作
- DOM和BOM有什麼區別?
- 回到基礎:理解 JavaScript DOMJavaScript
- JavaScript和DOMJavaScript
- javascript–BOM的onload事件和onunload事件JavaScript事件
- 【JavaScript】DOM之樣式操作JavaScript
- document、DOM、window、BOM區別
- JavaScript中的DOM和Timer(簡單易用的基本操作)JavaScript
- 這樣理解,java繼承中多型的屬性和方法Java繼承多型
- JavaScript 中的原型原來是這樣的JavaScript原型
- Javascript 獲取 Dom 樣式的方法有哪些JavaScript
- JavaScript中的瀏覽器檢測和DOM基礎JavaScript瀏覽器
- javascript中的prototype和__proto__的理解JavaScript
- 對javascript中的call()和apply()的理解JavaScriptAPP
- JavaScript中單例模式這樣用JavaScript單例模式
- 深入理解JavaScript中的WeakMap和WeakSetJavaScript
- 理解 JavaScript 中的 thisJavaScript
- 深入理解Emoji(二) —— 位元組序和BOM
- 我是這樣理解EventLoop的OOP
- Python 中的變數還能這樣理解(白話)Python變數
- 理解 JavaScript 中的原型JavaScript原型
- Virtual-DOM的理解
- 關於 DOM 的理解
- 理解Underscore中的去抖函式函式
- JavaScript基礎之BOM操作JavaScript
- 《JavaScript 闖關記》之 BOMJavaScript
- 理解 JavaScript 中的閉包JavaScript
- 理解 JavaScript 中的作用域JavaScript
- [譯] 理解 JavaScript 中的 undefinedJavaScriptUndefined
- 理解 JavaScript 中的迴圈JavaScript