什么是BOM

193 阅读2分钟

认识BOM?

javaScript有一个非常重要的运行环境就是浏览器,而且浏览器本身又作为一个应用程序需要对其本身进行操作,所以通常浏览器会有对

应的对象模型(BOM,Browser Object Model)。

我们可以将BOM看成是连接JavaScript脚本与浏览器窗口的桥梁。

BOM主要包括一下的对象模型:

window:包括全局属性、方法,控制浏览器窗口相关的属性、方法;

location:浏览器连接到的对象的位置(URL);

history:操作浏览器的历史;

document:当前窗口操作文档的对象;

window对象在浏览器中有两个身份:

身份一:全局对象。

我们知道ECMAScript其实是有一个全局对象的,这个全局对象在Node中是global;

在浏览器中就是window对象;

身份二:浏览器窗口对象。

作为浏览器窗口时,提供了对浏览器操作的相关的API;

Window全局对象

在浏览器中,window对象就是之前经常提到的全局对象,也就是我们之前提到过GO对象:

比如在全局通过var声明的变量,会被添加到GO中,也就是会被添加到window上;

比如window默认给我们提供了全局的函数和类:setTimeout、Math、Date、Object等;

Window窗口对象

事实上window对象上肩负的重担是非常大的:

第一:包含大量的属性,localStorage、console、location、history、screenX、scrollX等等(大概60+个属性);

第二:包含大量的方法,alert、close、scrollTo、open等等(大概40+个方法);

第三:包含大量的事件,focus、blur、load、hashchange等等(大概30+个事件);

第四:包含从EventTarget继承过来的方法,addEventListener、removeEventListener、dispatchEvent方法;

那么这些大量的属性、方法、事件在哪里查看呢?

MDN文档:developer.mozilla.org/zh-CN/docs/…

看MDN文档时,我们会发现有很多不同的符号,这里我解释一下是什么意思:

删除符号:表示这个API已经废弃,不推荐继续使用了;

点踩符号:表示这个API不属于W3C规范,某些浏览器有实现(所以兼容性的问题);

实验符号:该API是实验性特性,以后可能会修改,并且存在兼容性问题;

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情