JavaScript Window

Window 是浏览器中"整个窗口"的化身,也是浏览器对象模型(BOM)的顶层对象:窗口大小、地址栏、历史记录、弹窗、定时器都由它管理。页面里几乎所有全局变量和函数都挂在 window 上,document、location、history 这些对象也都是它的"下属"。以下示例请在浏览器控制台或 HTML 页面中运行。

window 就是全局对象

在全局作用域用 var 声明的变量、function 声明的函数,都会变成 window 的属性:

var site = "example";
function hello() { return "你好"; }
console.log(window.site);     // 输出:example,变量挂在 window 上
console.log(window.hello());  // 输出:你好,函数也是 window 的方法
console.log(window.document === document);  // 输出:true
console.log(window.alert === alert);        // 输出:true

因此 alert、setTimeout、console 这些"全局函数"本质都是 window 的方法,平时省略 window. 直接写即可。

窗口尺寸:innerWidth / innerHeight

innerWidth/innerHeight 是页面可视区尺寸(不含工具栏和滚动条),窗口 resize 时会变化:

console.log(window.innerWidth);   // 输出:1920(示例,随窗口变化)
console.log(window.innerHeight);  // 输出:969
window.onresize = function () {
  console.log("新宽度:" + window.innerWidth);
};
// 拖动浏览器窗口边缘,控制台会持续打印新宽度

做响应式布局时常判断 window.innerWidth 是否小于某个断点来切换移动端样式。

打开与关闭窗口:open / close

window.open(url, 名称, 特性) 打开新窗口或新标签,返回值是新窗口的引用:

let win = window.open("https://example.com", "_blank", "width=600,height=400");
// 效果:浏览器新开 600x400 的窗口打开 example.com 首页
// setTimeout(() => win.close(), 3000);  // 3 秒后自动关闭该窗口

注意:现代浏览器会拦截"非用户手势"触发的 open,所以 open 通常放在点击事件回调里。

三兄弟对话框:alert / confirm / prompt

alert 提示、confirm 询问、prompt 让用户输入,返回值各有讲究:

alert("欢迎学习 JavaScript");   // 效果:弹出一个只有"确定"的提示框
let ok = confirm("确定要删除吗?");  // 效果:弹窗带"确定/取消"
console.log(ok);                // 输出:点确定为 true,点取消为 false
let name = prompt("请输入姓名", "小明"); // 效果:弹窗带输入框,第二参是默认值
console.log(name);              // 输出:输入的内容;点取消则返回 null

这三兄弟会"阻塞"页面,正式项目里常被自定义弹窗组件替代,但调试时依旧好用。

window 的下属对象

常用的浏览器功能都封装在 window 的子对象里,后续章节逐个展开:

console.log(window.location.href);   // 当前页面完整网址
console.log(window.screen.width);    // 屏幕宽度(物理显示器)
console.log(window.history.length);  // 历史记录条数
console.log(window.navigator.userAgent); // 浏览器标识字符串

window.document 就是 DOM 的入口(getElementById 等);window.screen/location/history/navigator 分别描述屏幕、地址、历史与浏览器信息。记住一个图景:window 是根,document 管页面内容,location/history/navigator/screen 管"环境"。

小结:window 是 BOM 的顶层对象,全局变量/函数都是它的成员;innerWidth/innerHeight 获取视口尺寸,open/close 管理窗口,alert/confirm/prompt 与用户交互;document、location、history、navigator、screen 都是它的子对象,是学习后续各节的"总地图"。

笔记加载中…