2026/6/11 7:00:42
网站建设
项目流程
知识产权网站开发,手机网站建网,一个网站要多大的空间,推荐几个好的网站作为前端开发的基础#xff0c;DOM 和 BOM 是 JavaScript 与浏览器交互的核心#xff0c;但很多初学者容易将二者混淆 —— 前者操控网页内容#xff0c;后者掌控浏览器本身。本文将从定义、核心作用、使用场景、核心对象等维度#xff0c;彻底讲清 DOM 与 BOM 的区别与联系…作为前端开发的基础DOM 和 BOM 是 JavaScript 与浏览器交互的核心但很多初学者容易将二者混淆 —— 前者操控网页内容后者掌控浏览器本身。本文将从定义、核心作用、使用场景、核心对象等维度彻底讲清 DOM 与 BOM 的区别与联系帮你建立清晰的前端知识体系。一、先搞懂DOM 和 BOM 到底是什么1. DOM操控网页内容的 “文档对象模型”DOMDocument Object Model文档对象模型是浏览器将 HTML/XML 文档解析后生成的节点树模型它将网页的每一个元素如div、img、文本、属性都封装成 “对象”让 JavaScript 能通过编程方式操作这些对象 —— 比如新增一个按钮、修改文本内容、给元素绑定点击事件。核心定位DOM 是 JavaScript 操作 “网页内容” 的接口只关注html、body内部的内容与浏览器窗口本身无关。2. BOM掌控浏览器的 “浏览器对象模型”BOMBrowser Object Model浏览器对象模型是 JavaScript 与浏览器 “窗口层面” 交互的接口它提供了一系列对象如window、location、history用于控制浏览器窗口、导航、屏幕、弹窗等不涉及网页内容本身。核心定位BOM 是 JavaScript 操作 “浏览器” 的接口关注浏览器窗口、地址栏、历史记录、屏幕等全局层面的功能。二、核心区别一张表看懂 DOM 与 BOM维度DOM文档对象模型BOM浏览器对象模型核心关注网页内容HTML/XML 文档浏览器窗口 / 环境非网页内容顶层对象document隶属于windowwindow浏览器顶级对象全局作用域标准规范W3C 标准各浏览器实现一致无官方统一标准浏览器厂商自定义存在兼容性差异核心对象 / 功能-document操作文档节点-element操作元素-node节点增删改查- 事件元素点击、输入等-window窗口控制、全局作用域-locationURL 跳转 / 刷新-history浏览器历史记录-navigator浏览器信息-screen屏幕尺寸-alert/confirm弹窗使用场景动态修改页面内容如新增表格行、修改文本、绑定元素事件、操作样式页面跳转、刷新、打开新窗口、获取浏览器信息、控制窗口大小、定时器依赖关系依赖 BOM 的window对象document是window的属性独立存在包含 DOMDOM 是 BOM 的一部分三、深度解析DOM 与 BOM 的核心使用场景1. DOM 的典型使用场景操控网页内容DOM 的核心是 “节点操作”所有操作都围绕网页内容展开比如javascript运行// 1. 获取元素DOM核心操作第一步 const box document.getElementById(box); const list document.querySelectorAll(li); // 2. 修改内容/样式 box.textContent 新的文本内容; // 修改文本 box.style.color red; // 修改样式 box.classList.add(active); // 添加类名 // 3. 新增元素 const btn document.createElement(button); // 创建按钮 btn.textContent 点击我; box.appendChild(btn); // 插入到页面 // 4. 绑定元素事件 btn.onclick function() { alert(按钮被点击DOM事件); };核心特点所有操作都针对document下的节点最终体现在网页内容的变化上。2. BOM 的典型使用场景操控浏览器行为BOM 的操作不涉及网页内容而是控制浏览器的全局行为比如javascript运行// 1. 页面跳转BOM核心 window.location.href https://example.com; // 当前窗口跳转 window.open(https://example.com, _blank); // 新窗口打开 // 2. 控制浏览器历史记录 window.history.back(); // 后退 window.history.forward(); // 前进 // 3. 窗口控制 window.resizeTo(800, 600); // 调整窗口大小 window.scrollTo(0, 0); // 回到页面顶部注scroll属于BOM操作视口 // 4. 浏览器信息获取 const isMobile /Android|iPhone/.test(navigator.userAgent); // 判断设备类型 // 5. 定时器BOM核心功能 setTimeout(() { window.location.reload(); // 3秒后刷新页面BOMDOM结合 }, 3000);核心特点操作的是浏览器层面的功能即使没有网页内容空白页面BOM 依然可以正常使用。四、容易混淆的关键点DOM 与 BOM 的联系DOM 是 BOM 的 “子集”BOM 的顶层对象是window而documentDOM 的核心是window的一个属性 —— 也就是说所有 DOM 操作都隶属于 BOM 的window对象。比如document.getElementById()等价于window.document.getElementById()。二者常结合使用实际开发中DOM 和 BOM 很少单独使用比如javascript运行// 点击DOM元素DOM操作触发浏览器跳转BOM操作 document.querySelector(#jumpBtn).onclick function() { window.location.href ./detail.html; // BOM操作 };全局作用域的归属在浏览器中全局变量、全局函数都会成为windowBOM的属性而 DOM 的document本身也是window的属性比如javascript运行var a 10; console.log(window.a); // 10全局变量属于BOM的window console.log(window.document document); // trueDOM隶属于BOM五、新手避坑常见混淆场景解析误区 1把 “页面滚动” 当成 DOM 操作很多人认为scroll是 DOM 操作但实际上window.scrollTo()、element.scrollIntoView()中window.scrollTo()属于 BOM操作的是浏览器视口的滚动element.scrollIntoView()属于 DOM操作的是元素在视口中的位置。误区 2把 “弹窗” 当成 DOM 操作alert()、confirm()是 BOM 的window方法而非 DOM—— 即使页面没有任何 HTML 内容依然可以执行window.alert(hello)。误区 3认为 “事件绑定” 都是 DOM 操作元素的onclick如btn.onclickDOM 事件绑定在元素节点上window.onresize、window.onloadBOM 事件绑定在浏览器窗口上与网页内容无关。六、总结如何快速区分 DOM 与 BOM记住两个核心判断标准操作的是 “网页内容”→ DOM比如修改文本、新增按钮、调整元素样式都属于 DOM操作的是 “浏览器 / 窗口”→ BOM比如跳转页面、打开新窗口、获取浏览器信息、定时器都属于 BOM。DOM 和 BOM 是前端的两大基础理解二者的区别能帮你快速定位问题比如页面跳转失败→ 查 BOM 的location内容修改无效→ 查 DOM 的节点获取写出更规范的代码比如区分全局变量BOM和元素变量DOM避免命名冲突理解浏览器的工作原理知道 JavaScript 如何与浏览器、网页内容交互。无论是面试还是实际开发分清 DOM 和 BOM 都是前端开发者的必备能力 —— 前者让网页 “有内容、可交互”后者让网页 “能跳转、能适配”二者结合才构成了完整的前端交互体系。