BOM/DOM/JavaScript之间的关系

news/2025/2/7 9:02:03/文章来源:https://www.cnblogs.com/is-DW/p/18702007

BOM(Browser Object Model)和 DOM(Document Object Model)不是 JavaScript 语言自身的标准,但它们是在浏览器环境中实现的标准,由浏览器厂商提供支持。以下是两者的归属分析:


1. DOM(文档对象模型):浏览器遵循的 Web 标准

  • 标准化机构:由 W3C(World Wide Web Consortium)制定并维护,是 Web 标准的一部分
  • 与 JavaScript 的关系
    • DOM API(如 document.getElementById())是由浏览器实现的,但它们通过 JavaScript 访问。
    • JavaScript 语言本身(ECMAScript)并没有原生支持 DOM,DOM 是浏览器提供给 JavaScript 的操作文档的接口
  • 特点
    • 标准统一(各浏览器需遵循相同的规范)。
    • 例如:事件监听(addEventListener)、元素操作等均属 DOM 规范。

2. BOM(浏览器对象模型):浏览器厂商的自定义实现

  • 标准化机构无统一标准,由浏览器厂商(如 Chrome、Firefox)自行定义。
  • 与 JavaScript 的关系
    • BOM 的 API(如 window.locationnavigator)也是浏览器实现的,并通过 JavaScript 访问。
    • JavaScript 仅作为调用这些浏览器功能的“中间人”。
  • 特点
    • 功能因浏览器而异(例如 window.open() 的行为可能有差异)。
    • 部分接口已被 Web 标准逐步吸收(如 Web WorkersFetch API),但大多数 BOM 方法仍是非标准的。

3. JavaScript 的位置:ECMAScript 核心与宿主环境

  • JavaScript 语言核心:由 ECMAScript 规范定义(如变量、函数、循环等)。
  • 宿主环境(浏览器)
    • 在浏览器中,JavaScript 可以通过 宿主环境 提供的 BOM/DOM API 与浏览器/文档交互。
    • Node.js 等其他环境因无 BOM/DOM,无法使用相关接口(如 documentwindow)。

4. 为何容易混淆两者与 JavaScript 的关系?

  • JavaScript 是唯一语言:浏览器环境中只有 JavaScript 能调用 BOM/DOM 的接口。
  • 接口的绑定:浏览器将 BOM/DOM API 直接暴露给 JavaScript,开发者会误认为它们是 JavaScript 的内置功能。

5. 关键总结

特性 DOM BOM JavaScript(ECMAScript)
归属 W3C 的 Web 标准 浏览器厂商自定义实现 ECMA 国际的编程语言标准
标准化 统一标准(如 DOM Level 1~4) 无统一标准 统一标准(ES3~ES2023)
存在环境 浏览器/支持 DOM 的运行时 浏览器特有的功能 所有支持 ECMAScript 的环境
典型接口 document.querySelector window.alert functionArrayPromise

示例对比

// ECMAScript 核心语言(标准)
const arr = [1, 2, 3];
arr.forEach(num => console.log(num));// DOM(Web 标准,由浏览器实现)
document.body.style.backgroundColor = "red";// BOM(无标准,浏览器自定义实现)
window.scrollTo(0, 100); // 不同浏览器可能表现不同

结论

BOM/DOM 是浏览器遵循或自定义的环境标准,JavaScript 只是通过这些浏览器提供的接口操作功能。你可以理解为:

  • JavaScript(ECMAScript)是语言的“核心语法”。
  • BOM/DOM 是浏览器为 JavaScript 提供的“额外工具包”(非语言自身功能)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879936.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法连接/访问 Linux虚拟的中的端口(Redis)

Could not connect to Redis at 192.168.137.132:6379: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。当出现 “Could not connect to Redis at 192.168.137.132:6379: No route to host” 错误,意味着客户端无法找到通往 Redis 服务器(IP 为 192…

钉钉发送告警(非@)

环境: OS:Centos 7 python:2.7[root@yunwei-zabbix-1000001-prd alertscripts]# more dingtalk_middleware.py #!/usr/bin/env python #-*- coding: utf-8 -*-import sys, json, urllib2def Dingtalk(message):content = messageurl = "https://oapi.dingtalk.com/robot/…

为GitLab配置Microsoft Graph作为邮件收发工具

先决条件Microsoft/Office 365订阅(Exchange是必须的)并添加一个gitlab专用的账户,本文使用E5开发者订阅 部署好的GitLab,参考上一篇文章步骤一、 配置Microsoft Entra 1. 注册应用程序 登录Azure门户,进入Microsoft Entra ID,选择管理-应用注册-新注册填写你想要的名称,…

C# 深度学习框架 TorchSharp 原生训练模型和图像识别-自定义网络模型和识别手写数字

目录使用 Torch 训练模型定义神经网络加载数据集创建网络模型定义损失函数训练识别手写图像 教程名称:使用 C# 入门深度学习 作者:痴者工良 教程地址:https://torch.whuanle.cn 电子书仓库:https://github.com/whuanle/cs_pytorch Maomi.Torch 项目仓库:https://github.co…

ZW3D二次开发_入门_Action与Ribbon菜单定制--转自 知乎 捣蛋龙

ZW3D二次开发_入门_Action与Ribbon菜单定制捣蛋龙 ​关注他5 人赞同了该文章​ 目录收起ZW3D二开入门目录 - 知乎 (zhihu.com)最新测试环境:2025 SP前言定制Ribbon菜单1.新建工作区2.定义"行为"3.定义自定义Ribbon文件4.编写策略文件5.编写引导程序6.多环境差异化策…

day4

简单图论与构造 A 考虑把权值为 2 的点看作给权值为 1 的点加一, 所以整个问题被拆成了两个部分:构造树和给节点加一 事实上,在第一部分时我们将树构造的尽量平衡是有好处,这个结论在第二个步骤中会得到证明 构造: Process DFS(father,ch,u,size):if size==0 then returnso…

Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具

Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具 Optimizing Images Using Omnissa Horizon Windows OS Optimization Tool 请访问原文链接:https://sysin.org/…

BOM最全基础信息:标准件、通用件、替换件、必选件

在生产制造领域,物料清单(BOM)是产品设计、生产计划和供应链管理的核心基础。本文系统梳理了BOM中各类零部件的分类方法,供大家参考。在生产制造的复杂领域中,我们会与各式各样的产品组成部分打交道。清晰、准确地对它们进行分类,并实施有效的管理,对于提升生产效率、保…

人工智能辅助芯片设计

芯片设计:一个近乎无限的问题空间 设计复杂性呈指数级增长 设计复杂性的含义 一连串棘手的问题 贯穿整个流程优化 HDL生成研究 使用GCN加速设计评估 人工智能辅助验证 参考文献链接https://www.hc2024.hotchips.org/assets/program/tutorials/3-HC24.synopsys.SteliosDiaman…

应用随机过程 | 期末 cheat sheet

出分后发布笔记……这篇博客汇总了「应用随机过程」2018 - 2022 的期末试题,并根据题型分类总结。 本站相关博客:应用随机过程 | 期末知识点总结特别鸣谢:知乎 | 九一居士 |《应用随机过程》课程笔记系列目录1 马尔可夫链计算题2 常返的马尔可夫链3 连续时间参数的马尔可夫链…

推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》4本书,非常感谢

4本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》、《TVM编译器原理与实践》、《LLVM编译器原理与实践》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该…