首先我们想一下在JS基础学习中遇到了哪些对象?
没错有ECMAScript(JS语法)中的自定义对象,JS内置对象,还有页面文档对象模型DOM
那么BOM又是什么?
我们知道浏览器是JS的前端运行环境,现在"万事具备",只差浏览器对象
没错BOM就是浏览器对象模型,我们通过一张图来总结梳理他们的关系:
DOM对象的顶级对象是document,所以我们命名它为页面文档对象模型
而BOM是浏览器对象模型,那么它的顶级对象就是window
不过BOM是各浏览器厂商在各自浏览器中定义的,所以会出现一些兼容性的问题,不过大抵是相同的,我们无需担心
说到window顶级对象了,它不仅仅是浏览器的顶级对象,它还是JS访问浏览器窗口的一个接口
window顶级对象同时也是全局对象,定义在全局作用域的变量、函数等都会变成window对象的属性和方法
我们通过一段代码来了解一下:
//当我们获取事件时,之前的写法
document.querySelector('')
//完整写法
window.document.querySelector('')
//当我们定义了一个全局变量并打印输出时:
const num = 10
console.log(num)
//其实
console.log(window.num)
谁能想到一个全局变量竟然变成了一个window属性
//当我们创建函数时
function test(){
console.log('test1')
}
test()
//其实是
window.test()
还有alert()以及prompt()都属于window对象方法