← JavaScript BOM 浏览器对象 JavaScript history 对象 →

JavaScript Window 对象

原创 2026-03-24 JavaScript 已有人查阅

Window 对象详解:与浏览器窗口直接对话的入口

上一节我们聊了BOM的整体结构,知道了 window 是顶层对象。这一节我们把焦点放在 window 对象本身,看看它提供哪些直接可用的方法,以及在开发中怎么用它们来解决具体问题。

先厘清一个概念:window 不属于 JavaScript

有个细节值得注意:window 对象是浏览器创建并提供的,它不属于 JavaScript 语言本身。JavaScript 语言层面的对象是 StringArrayDate 这些。window 是浏览器环境给 JavaScript 运行时的“外挂装备”。

个人见解: 理解这一点有助于区分“语言特性”和“环境特性”。当你的 JavaScript 代码跑到 Node.js 环境里运行时,就没有 window 对象了,取而代之的是 global。所以 window 是浏览器的专属 API。

帧页面与 window 对象

如果页面中使用了 <iframe> 或 <frame> 嵌入其他页面,浏览器会为每一个框架单独创建一个 window 对象。这意味着,父页面和嵌入的 iframe 页面有各自独立的 window 上下文,它们之间需要通过特定方式(如 contentWindow)进行通信,不能直接混用变量。

window 对象的核心方法

下面这几个方法是操作浏览器窗口最常用的,我们逐一过一遍,每个都配上可以直接运行的示例。


1. alert() —— 简单直接的提示框

alert() 弹出一个只有“确定”按钮的消息框。它较大的特点是会阻塞代码执行,用户点确定之前,后面的代码不会运行。

示例:点击按钮弹出提示

<script>
function showMessage() {
    alert("欢迎来到代码号学习编程,这是一条提示信息");
}
</script>
<input type="button" value="显示提示" onclick="showMessage()" />

个人经验: alert 在调试代码时非常方便,但正式项目中不建议用来做主要交互,因为它会中断用户体验。调试时我更喜欢用 console.log,只有在需要强制用户注意某条信息时才用 alert


2. confirm() —— 带选择的确认框

confirm() 会弹出带有“确定”和“取消”按钮的对话框。它的返回值是布尔值:点确定返回 true,点取消返回 false

示例:删除前的二次确认

<script>
function deleteRecord() {
    let userConfirmed = confirm("确定要删除这条记录吗?操作不可撤销。");
    if (userConfirmed) {
        alert("已删除");
        // 这里可以写实际的删除逻辑
    } else {
        alert("已取消删除");
    }
}
</script>
<input type="button" value="删除记录" onclick="deleteRecord()" />

个人建议: 对于删除、提交表单这类“不可逆”的操作,加上 confirm 做二次确认是一个好习惯,能有效减少用户误操作带来的问题。


3. prompt() —— 获取用户输入的对话框

prompt() 会弹出一个带输入框的对话框,用户输入内容后,点击确定返回输入的字符串,点击取消返回 null

示例:询问用户名并打招呼

<script>
function askName() {
    let userName = prompt("请问怎么称呼您?");
    if (userName !== null && userName !== "") {
        alert("你好," + userName + ",欢迎访问代码号学习编程");
    } else if (userName === "") {
        alert("您没有输入任何内容");
    } else {
        alert("您取消了输入");
    }
}
</script>
<input type="button" value="打招呼" onclick="askName()" />

个人见解: prompt 适合做极简的输入获取场景,比如临时收集一个简单信息。但如果需要收集多个字段或做复杂校验,还是用表单更合适,prompt 样式不可控且用户体验相对粗糙。


4. open() —— 打开新窗口

open() 方法用于打开一个新的浏览器窗口或标签页。它可以指定要加载的 URL、窗口名称、窗口特性等。

示例:在新窗口打开链接

<script>
function openNewWindow() {
    window.open("https://www.ebingou.cn/biancheng/", "_blank");
}
</script>
<input type="button" value="打开学习页面" onclick="openNewWindow()" />

注意事项: 现在浏览器对 open() 有限制,如果不是由用户直接触发的点击事件调用,可能会被拦截。因此这个方法一般写在按钮的点击回调里才安全。


5. close() —— 关闭当前窗口

close() 用于关闭当前窗口。但如果窗口不是由 JavaScript 打开的,浏览器通常会询问用户是否确认关闭,以防止恶意脚本关掉用户正常浏览的页面。

示例:关闭当前窗口(谨慎使用)

<script>
function closeWindow() {
    let confirmClose = confirm("确认要关闭当前页面吗?");
    if (confirmClose) {
        window.close();
    }
}
</script>
<input type="button" value="关闭窗口" onclick="closeWindow()" />

6. setTimeout() —— 延迟执行

setTimeout() 用于在指定的毫秒数之后执行一段代码或一个函数。它是 JavaScript 异步编程中最基础的方法之一。

示例:2秒后弹出欢迎语

<script>
function delayedWelcome() {
    setTimeout(function() {
        alert("延迟2秒后出现的欢迎语,来自代码号学习编程");
    }, 2000);
}
</script>
<input type="button" value="延迟提醒" onclick="delayedWelcome()" />

个人经验: setTimeout 经常用在需要“等一下再做某件事”的场景,比如防抖处理、延迟加载提示、模拟网络请求响应等。要记得它返回的是一个 timeoutId,如果需要提前取消,可以用 clearTimeout()


本节课程知识要点

方法 用途 返回值 常用场景
alert() 纯提示 调试、简单消息通知
confirm() 确认选择 Boolean 删除确认、重要操作前确认
prompt() 获取单条输入 String / null 获取用户名、简短信息
open() 打开新窗口 新窗口对象 外链跳转、弹窗功能
close() 关闭窗口 关闭弹窗或自开启页面
setTimeout() 延迟执行 timeoutId 延迟加载、动画延迟、防抖

个人建议: 这些方法虽然基础,但组合使用能实现不少实用功能。比如可以用 setTimeout 配合 alert 做“定时提醒”,也可以用 confirm 配合 open 实现“确认后跳转”。关键是理解每个方法的行为特性,尤其是它们会阻塞代码执行还是异步执行,这对写出流畅的交互逻辑很重要。

下一节我们会深入 window 对象下那些“看不见但天天用”的属性,比如 innerWidthinnerHeightscroll 等,看看它们如何帮我们实现响应式交互。

← JavaScript BOM 浏览器对象 JavaScript history 对象 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号