DOM和BOM的区别
在浏览器中运行的JavaScript
可以认为由三部分组成:ECMAScript
描述了该语言的语法和基本对象,DOM
文档对象模型描述了处理网页内容的方法和接口,BOM
浏览器对象模型描述了与浏览器进行交互的方法和接口。
DOM
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
的父类。
BOM
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