在浏览器中运行的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