BOM 与 DOM

前言:我们都知道 javascript 有三部分组成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异。BOM 和 DOM 都属于js的组成部分,那么,BOM 和 DOM 之间有什么区别呢?接下来本篇文章将给大家介绍js中 BOM 和 DOM 之间的区别。

本文在撰写前参考了B站黑马程序员和知乎@散修杂技

一、DOM
1、DOM 是什么
DOM:文档对象模型(Document Object Model),是W3C定义的一套用于处理HTML和XML文档内容的标准编程接口API。javascript实现DOM接口的对象对应的是document对象,JS通过该对象来对HTML/XML文档进行增删改查。
DOM定义了HTML和XML的逻辑结构,将整个页面划分成由层次节点构成的文档,以树的形式来展现。
在BOM和DOM结构层次图中,document对象属于window对象,所以DOM也可以看作是BOM的一部分。
总结:DOM 是浏览器提供的一套专门用来操作网页内容的功能。DOM 的作用是开发网页内容特效和实现用户交互

2、DOM 树
DOM树是什么

将 HTML 文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树
表述网页内容关系的名词
作用:文档树直观的体现了标签与标签之间的关系

3、DOM对象(重要)
DOM 对象:浏览器根据 HTML 标签生成的 JS 对象

所有的标签属性都可以在这个对象上找到
修改这个对象的属性会自动映射到标签身上
DOM 的核心思想

把网页内容当作对象来处理
document 对象

是 DOM 里提供的一个对象

所以它提供的属性和方法都是用来访问和操作网页内容的

例:document.write()

网页所有内容都在 document 里面

4、 DOM 对象的操作
以后更新

二、BOM
BOM:浏览器对象模型(Brower Object Model),是用于操作浏览器而出现的API,BOM对象则是Javascript对BOM接口的实现。用白话文来说就是浏览器可以做什么呢?比如跳转到另一个页面、前进、后退等等,程序还可能需要获取屏幕的大小之类的参数。所以 BOM 就是为了解决这些事情出现的接口。BOM提供了独立于内容的、可以与浏览器窗口进行交互的对象结构。通过BOM对象可以访问浏览器功能部件和属性。

BOM对象由多个对象构成,其中代表浏览器窗口的window对象是Javascript顶层对象,其他BOM对象均为window对象的子对象。被作为window对象的属性来引用。
window 对象下包含了 navigator、location、document、history、screen 5个属性
注:依附于 window 对象的所有属性和方法,使用时可以省略 window
BOM对象最根本的是window。

三、BOM 和 DOM 的关系
DOM 与 JavaScript 的关系
HTML DOM 独立于平台和编程语言。它可被任何编程语言诸如 Java、JavaScript 和 VBScript 使用
DOM对象即是我们用javascript实现DOM接口获得的对象。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容
dom是有W3C(万维网联盟)定义的一种规范,这种规范被很多浏览器厂商支持,但是要注意的是他并不是JavaScript语言,虽然他可以在JavaScript中可以被直接使用(主要是将其封装成了JavaScript支持的形式才导致的)
因此有这样一个近似的等式:web或XML页面 = DOM +JS(脚本语言)
2、 BOM 和 DOM 的关系

document是DOM的核心对象,window则是BOM的核心对象,而又有:

console.log(window.document === document); //true
1
因为document是DOM的根节点,而以上代码又表明:document在window对象中是作为其一个属性而存在的,因此从这个角度来说,BOM包含了DOM。

浏览器提供出来给予访问的是BOM对象,从BOM对象再访问到DOM对象,从而js可以操作浏览器以及浏览器读取到的文档。

与此类似,你还可以验证如下代码:

console.log(window.location === location); //true

console.log(window.navigator === navigator); //true

console.log(window.screen === screen); //true

console.log(window.history === history); //true

console.log(window.window === window); //true
1
2
3
4
5
6
7
8
9
location navigator screen history和window一样,都是BOM提供的对象,只不过它们和document对象一样,都同时以属性的形式存在于window中

四、BOM 和 DOM 的区别
DOM 是为了操作文档出现的 API,DOM对象最根本的是document(实际上是window.document)
BOM 是为了操作浏览器出现的 API,BOM对象最根本的是window
BOM是浏览器对象模型,DOM是文档对象模型,前者是对浏览器本身进行操作,而后者是对浏览器(可看成容器)内的内容进行操作
下面用一幅图来作说明

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ftLlG1tH-1659857222892)(https://typora-ac999.oss-cn-shanghai.aliyuncs.com/v2-4680d272a59cd5d68bf44f2b2e2a1b26_r%20(1)].jpg)

归 DOM 管的:

E区(就是你说的document啦。由web开发人员呕心沥血写出来的一个文件夹,里面有index.html,CSS和JS什么鬼的,部署在服务器上,我们可以通过浏览器的地址栏输入URL然后回车将这个document加载到本地,浏览,右键查看源代码等

归 BOM 管的

A区(浏览器的标签页,地址栏,搜索栏,书签栏,窗口放大还原关闭按钮,菜单栏等等)

B区(浏览器的右键菜单)

C区(document加载时的状态栏,显示http状态码等)

D区(滚动条scroll bar)

五、BOM 和 DOM 对象的详细介绍
window对象 ——BOM核心

是BOM对象的核心,JS的顶层对象,浏览器窗口只要打开一个HTML文档,浏览器就会为我们创建一个window对象。它表示整个浏览器窗口,主要用来操作浏览器窗口。

window对象是JS中的全局对象,可以在任何地方调用, 我们在页面上写的元素,js函数,全局变量都属于window对象,都可以 用window对象来调用.

全局变量是 window 对象的属性。

全局函数是 window 对象的方法。

在使用window对象的属性和方法时,可以用window.属性、window.方法()或者直接属性、方法()的方式调用。就是可以省略window这个前缀。

简写案例:window.alert() ,可以直接用alert(),它俩是一个意思. window.document.write(),可以简写成document.write()

document对象——DOM核心

document对象是window的一个属性(BOM包含了DOM)

**window.**document对象在编写时可以不使用 window 这个前缀.

可以用来处理页面文档,方法很多

Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

示例 :document.getElementById();

frame对象

frames对象是浏览器窗口中的框架对象数组 。
除了status,defaultStatus,name属性外,它拥有window对象的全部属性.
属性 frames.length存放数组 frames[] 中含有的元素个数。
screen对象

Screen对象是window对象的属性,**window.**Screen对象在编写时可不使用 window 这个前缀,
Screen 对象包含有关客户端显示屏幕的信息
主要用来获取用户的屏幕信息,并作出优化
height: 获取整个屏幕的高。

width : 获取整个屏幕的宽。

availHeight: 整个屏幕的高减去系统部件的高( 可用的屏幕宽度 )

availWidth : 整个屏幕的宽减去系统部件的宽(可用的屏幕高度 )

history对象

history对象是window对象的属性,window.history对象在编写时可不使用 window 这个前缀。
History 对象包含用户(在浏览器窗口中)访问过的 URL
主要实现前进后退等功能
back() 返回上一页。

forward() 返回下一页。

go(“参数”) -1表示上一页,1表示下一页。

navigator对象

navigator对象是window对象的属性,window.navigator 对象在编写时可不使用 window 这个前缀。
包含了一系列浏览器信息的属性 userAgent是最常用的属性,用来完成浏览器判断。
location对象

location对象是window对象的属性,window.location 对象在编写时可不使用 window 这个前缀,
用来分析和设置页面的URL地址
Location 对象存储在 Window 对象的 Location 属性中,表示那个窗口中当前显示的文档的 Web 地址。它的 href 属性存放的是文档的完整 URL,其他属性则分别描述了 URL 的各个部分。
常用于对URL进行访问。
下面放两张思维导图

DOM 基本操作思维导图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2EwOl0on-1659857222892)(https://typora-ac999.oss-cn-shanghai.aliyuncs.com/v2-517780104e7410b094f00ff577615ec7_1440w%20(1)].jpg)

window 对象思维导图
ion 属性中,表示那个窗口中当前显示的文档的 Web 地址。它的 href 属性存放的是文档的完整 URL,其他属性则分别描述了 URL 的各个部分。

常用于对URL进行访问。
下面放两张思维导图

DOM 基本操作思维导图

2.window 对象思维导图 

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/weixin_47432345/article/details/126211808

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值