BOM
BOM(Browser Object Model,浏览器对象模型)是浏览器提供的、用来操作浏览器本身的对象集合,window 是它的顶层对象。
这一篇讲 BOM 的重要对象:window、location、history、navigator、screen,以及本地存储 localStorage / sessionStorage(重点)。
一、window 对象
window 是全局对象,所有全局变量和全局函数都是 window 的属性和方法。
1 2 3
| var name = "Tom"; console.log(window.name); console.log(window === window.window);
|
1. 常用方法
1 2 3 4 5 6 7
| alert("提示框"); confirm("确定吗?"); prompt("请输入");
window.open("https://example.com"); window.close(); window.scrollTo(0, 100);
|
2. 视口尺寸
1 2
| window.innerWidth; window.innerHeight;
|
3. 定时器(回顾)
1 2 3 4
| const id = setTimeout(() => { }, 1000); const id2 = setInterval(() => { }, 1000); clearTimeout(id); clearInterval(id);
|
注意:setTimeout/setInterval 本质是 window 的方法,可省略 window.。
二、location 对象(URL 相关)
1 2 3 4 5 6 7 8
| location.href; location.href = "https://example.com"; location.reload();
location.host; location.pathname; location.search; location.hash;
|
获取 URL 查询参数(常用技巧):
1 2 3 4
| const params = new URLSearchParams(location.search); params.get("id"); params.get("name");
|
三、history 对象(前进后退)
1 2 3
| history.back(); history.forward(); history.go(-1);
|
SPA 单页应用修改地址栏(不刷新页面):
1
| history.pushState(null, "", "/new-page");
|
四、navigator 对象(浏览器信息)
1 2 3 4
| navigator.userAgent; navigator.language; navigator.platform; navigator.onLine;
|
五、screen 对象(屏幕信息)
1 2
| screen.width; screen.height;
|
六、本地存储(重点)
1. localStorage 与 sessionStorage
1 2 3 4 5 6 7 8 9 10
| localStorage.setItem("name", "Tom"); sessionStorage.setItem("name", "Tom");
localStorage.getItem("name");
localStorage.removeItem("name"); localStorage.clear();
|
两者的区别:
|
localStorage |
sessionStorage |
| 生命周期 |
持久,手动删才消失 |
关闭标签页/浏览器即清除 |
| 作用域 |
同源所有标签页共享 |
仅当前标签页 |
| 容量 |
约 5MB |
约 5MB |
2. 存对象必须 JSON 序列化
1 2 3 4 5 6 7 8
| const user = { name: "Tom", age: 18 };
localStorage.setItem("user", JSON.stringify(user));
const obj = JSON.parse(localStorage.getItem("user")); console.log(obj.name);
|
⚠️ 核心坑:localStorage 只能存字符串,直接存对象会变成 "[object Object]"。所以存对象必须 JSON.stringify,取出来必须 JSON.parse。
3. 应用场景
localStorage:记住登录状态、主题偏好、购物车(长期保存)。
sessionStorage:表单临时数据、单次会话内的状态(关页即清)。
4. cookie 对比(了解)
|
cookie |
localStorage |
| 是否发给服务器 |
每次请求自动携带 |
不自动发 |
| 容量 |
约 4KB |
约 5MB |
| 生命周期 |
可设过期时间 |
持久(手动删) |
记忆点:需要服务器能读到的小数据用 cookie;纯前端本地存大数据用 localStorage。
七、速查表
| 需求 |
写法 |
| 弹窗提示 |
alert("msg") / confirm("确定?") / prompt("输入") |
| 视口尺寸 |
window.innerWidth / innerHeight |
| 跳转页面 |
location.href = "url" |
| 刷新页面 |
location.reload() |
| 获取 URL 参数 |
new URLSearchParams(location.search).get("id") |
| 后退/前进 |
history.back() / history.forward() / history.go(-1) |
| 浏览器信息 |
navigator.userAgent / navigator.language |
| 本地存储 |
localStorage.setItem("k", "v") / getItem("k") |
| 删除存储 |
localStorage.removeItem("k") / clear() |
| 存对象 |
setItem("k", JSON.stringify(obj)) |
| 取对象 |
JSON.parse(localStorage.getItem("k")) |
八、复习要点
- window 是全局对象,全局变量/函数都挂在它上面;定时器是 window 的方法。
- location 管 URL:跳转
href、刷新 reload、参数 search + URLSearchParams。
- history 管前进后退:
back/forward/go,pushState 用于 SPA。
- navigator 提供浏览器信息:
userAgent、language、onLine。
- localStorage 持久、跨标签共享;sessionStorage 会话级、仅当前标签。
- 本地存储只能存字符串,存/取对象必须
JSON.stringify / JSON.parse。
- 需要服务器读取的小数据用 cookie,纯前端大数据用 localStorage。