贝利信息

javascript中的BOM对象有哪些【教程】

日期:2026-01-26 00:00 / 作者:紅蓮之龍
BOM 不是标准定义的类或构造函数,而是对浏览器提供的一组非标准化全局对象的统称;其核心是 window 对象,navigator、location 等均为其属性;location 可读写并触发跳转,history 通过 pushState/replaceState 改变 URL 而不刷新页面。

JavaScript 中没有一个叫 “BOM 对象” 的单一对象,window 才是 BOM 的核心和顶层对象,其他所谓 “BOM 对象” 实际上都是 window 的属性或内置接口。

为什么查不到 BOM 这个构造函数或类?

BOM(Browser Object Model)不是标准规范定义的正式 API 接口,而是对浏览器提供的一组非标准化、但被广泛实现的全局对象和能力的统称。它不像 DOM 那样有 W3C/WHATWG 标准文档约束,因此没有 new BOM() 这种用法,也没有 typeof BOM === 'object' 成立的情况。

常见误解是把 navigatorlocationhistoryscreendocument 当成“BOM 对象”,其实它们只是 window 的只读属性:

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

locationhistory 的关键区别在哪?

两者都用于控制浏览器地址栏和导航行为,但语义与权限完全不同:

立即学习“Java免费学习笔记(深入

)”;

哪些 BOM 属性在 iframe 或 Web Worker 中不可用?

window 是浏览器环境的全局对象,而 iframe 拥有自己独立的 window 实例,Web Worker 则完全无 window —— 所以这些属性在不同上下文表现差异极大:

真正要注意的是:BOM 行为高度依赖运行环境(是否在 iframe、是否同源、是否启用 CORS、是否禁用 JS),很多看似“通用”的写法在嵌入场景下会静默失败或抛出安全错误 —— 比如 top.location.href = '...' 在跨域 iframe 中会触发 SecurityError,而不是跳转。