DOM (Document Object Model) 譯為文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口。
HTML DOM 定義了訪問和操作 HTML 文檔的標(biāo)準(zhǔn)方法。
DOM 以樹結(jié)構(gòu)表達(dá) HTML 文檔。
HTML DOM 樹形結(jié)構(gòu):


DOM解釋參考:
作者:字非易
鏈接:https://www.zhihu.com/question/34219998/answer/268568438
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
牢記:站高一個(gè)維度去理解問題!
????為了理解DOM,我們至少需要站在瀏覽器的角度來思考。DOM概念本身很簡單,請(qǐng)先完全跟著我的思路來:
????普通文檔(.txt)和HTML/XML文檔(.html/*.xml)的區(qū)別僅僅是因?yàn)楹笳呤怯薪M織的結(jié)構(gòu)化文件;
????瀏覽器將結(jié)構(gòu)化的文檔以樹的數(shù)據(jù)結(jié)構(gòu)讀入瀏覽器內(nèi)存,并將每個(gè)樹的子節(jié)點(diǎn)定義為一個(gè)NODE(想象這顆樹,從根節(jié)點(diǎn)到葉子節(jié)點(diǎn)都被建模為一個(gè)NODE對(duì)象);這每個(gè)節(jié)點(diǎn)(NODE)都有自己的屬性(名稱、類型、內(nèi)容...);NODE之間有層級(jí)關(guān)系(parents、child、sibling...);以上已經(jīng)完成文檔的建模工作(將文檔內(nèi)容以樹形結(jié)構(gòu)寫入內(nèi)存),此時(shí)再編寫一些方法來操作節(jié)點(diǎn)(屬性和位置信息),即為NODE API。
????抽象一下:DOM是一種將HTML/XML文檔組織成對(duì)象模型的建模過程;DOM建模重點(diǎn)在于如何解析HTML/XML文檔和開放符合DOM接口規(guī)范的節(jié)點(diǎn)操作API接口。
????再抽象一下:解析文檔,建模成對(duì)象模型,開放API接口。
????最后:DOM:Document Object Model
????文檔對(duì)象模型再回顧下整個(gè)過程,每個(gè)步驟都可以問自己幾個(gè)問題,比如:DOM到底是建模過程,還是最后建的那個(gè)模型,還是指操作節(jié)點(diǎn)的API接口呢,還是...?以上是站在瀏覽器的角度思考DOM,你還可以站在瀏覽器設(shè)計(jì)人員、網(wǎng)頁編碼人員等角度考慮:DOM跟JavaScript什么關(guān)系?DOM很顯然誕生在瀏覽器,一開始是用JS實(shí)現(xiàn)的;但隨著DOM本身的發(fā)展,已經(jīng)形成規(guī)范,你可以用任何一種語言比如Python來解析文檔,生成對(duì)像樹,只要滿足DOM標(biāo)準(zhǔn),包括開放標(biāo)準(zhǔn)的操作接口,那你實(shí)現(xiàn)的就是一個(gè)DOM。DOM開放的接口如何操作?JS原生接口使用。JQuery高緯度封裝如何使用。...至此,你應(yīng)該明白了什么是DOM,甚至明白了為什么一開始不明白以后如何做,如何舉一反三,甚至還能看出一點(diǎn)如何建立體系化認(rèn)知的影子。笑牢記:站高一個(gè)維度去理解問題 !
DOM就是XML文檔在內(nèi)存中的表示形式,如下圖所示:

作者:用心閣
鏈接:https://www.zhihu.com/question/34219998/answer/58135899
來源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。