在瀏覽器中運行的JavaScript
能夠認爲由三部分組成:ECMAScript
描述了該語言的語法和基本對象,DOM
文檔對象模型描述了處理網頁內容的方法和接口,BOM
瀏覽器對象模型描述了與瀏覽器進行交互的方法和接口。git
DOM
是Document Object Model
的縮寫,即文檔對象模型。DOM
是W3C
的標準。DOM
最根本對象是document
,即window.document
。DOM
全稱是Document Object Model
即文檔對象模型,是針對XML
的基於樹的API
,描述了處理網頁內容的方法和接口,是HTML
和XML
的API
,DOM
把整個頁面規劃成由節點層級構成的文檔。DOM
和文檔有關,這裏的文檔指的是網頁,也就是HTML
文檔。網頁是由服務器發送給客戶端瀏覽器的,不管用什麼瀏覽器,接收到的HTML
都是同樣的,因此DOM
和瀏覽器無關,其關注的是網頁自己的內容,因爲是相對獨立於瀏覽器的,因此能夠制定標準。
DOM
定義了Node
等對象作爲這種實現的基礎,就是說爲了能以編程的方法操做這個HTML
的內容,例如添加元素、修改元素、刪除元素等,咱們把這個HTML
結構看作一個對象樹DOM
樹,其自己和裏面的全部東西例如<div></div>
這些標籤都看作一個對象,每一個對象都叫作一個節點Node
,節點能夠理解爲DOM
中全部Object
的父類。github
BOM
是Browser Object Model
的縮寫,即瀏覽器對象模型。BOM
沒有相關標準。BOM
的最根本對象是window
。BOM
是Browser Object Model
即瀏覽器對象模型,DOM
是爲了操做文檔出現的接口,而BOM
就是爲了控制瀏覽器的行爲而出現的接口,例如跳轉頁面、前進、後退、書籤等等,程序還可能須要獲取屏幕的大小之類的參數,因此BOM
就是爲了解決這些事情出現的接口,例如咱們要讓瀏覽器跳轉到另外一個頁面就須要Location
對象。
因爲沒有標準,不一樣的瀏覽器實現同一功能,能夠須要不一樣的實現方式,因此對於上面說的功能,不一樣的瀏覽器的實現功能所須要的JavaScript
代碼可能不相同。雖然BOM
沒有一套標準,可是各個瀏覽器的經常使用功能的JavaScript
代碼仍是大同小異的,對於經常使用的功能實際上已經有默認的標準了,因此不用過於擔憂瀏覽器兼容問題,不是每一個瀏覽器都有本身的BOM
,也不須要爲每一個瀏覽器都學習一套BOM
,只是個別瀏覽器會有新增的功能會在BOM
上體現出來。編程
https://github.com/WindrunnerMax/EveryDay
https://www.zhihu.com/question/20724662 https://juejin.cn/post/6844903939008102413 https://blog.csdn.net/xiao__gui/article/details/8315148