window 全局对象
在浏览器宿主环境中时,window
是顶级对象,或者说是全局对象,ES6
为了解决多环境统一问题(如在 Node
环境),新增了一个 globalThis
对象,在浏览器中与 window
相等。
因为它是顶级对象,所以 BOM
下所有属性都是它的属性,甚至 DOM
对象也属于它的属性,只是因为它是全局的,所以我们通常会省略它。
JS
前期因为设计原因,var
以及 function
也会挂载在 window
下,ES6
新增的 let、const
声明方式解决这个问题,它们声明的变量不再挂载在 window
下。
常用属性
属性 | 重要性 | 说明 |
---|---|---|
document | √ | 读取整个文档对象 |
history | √ | 浏览器中访问过的 URL 记录 |
localStorage | √ | - |
sessionStorage | √ | - |
navigator | √ | 当前浏览器相关信息 |
location | √ | 当前 URL 信息 |
screen | - | 屏幕信息 |
frames | - | 一般在 iframe 中使用 |
self | - | 一般在 iframe 中使用 |
top | - | 一般用于判别是否在 iframe 中 |
scrollX | - | 返回文档水平方向滚动的像素值 |
scrollY | - | 返回文档垂直方向滚动的像素值 |
screen | - | 屏幕信息对象 |
screenLeft | - | 浏览器左边界距离屏幕左边缘距离 |
screenTop | - | 浏览器上边界距离屏幕上边缘距离 |
screenX | - | 同 screenLeft |
screenY | - | 同 screenTop |
常用方法
属性 | 重要性 | 说明 |
---|---|---|
alert() | - | 提示框 |
confirm() | - | 确认框 |
open(url) | √ | 打开新标签页 |
close() | - | 关闭由 open(url) 打开的标签页 |
scroll(x, y) | √ | 以文档左上角 0 0 为原点进行滚动 |
scrollTo(x, y) | √ | 同 scroll() 方法 |
scrollBy(x, y) | √ | 以当前左上角为原点进行滚动 |
setTimeout() | √ | - |
setInterval() | √ | - |
clearTimeout() | √ | - |
clearInterval() | √ | - |
postMessage() | √ | 页面跨域通信 |
getComputedStyle() | √ | 获取元素的 CSS 样式,准确值 |
print() | - | 和 win + p 效果一致,打印预览当前页面 |
getSelection() | - | 一般在富文本处理中使用,如比获取光标位置,选中了哪些内容 |
resizeBy(w, h) | - | 必须 open() 打开的标签页 |
resizeTo(w, h) | - | 必须 open() 打开的标签页 |
moveBy(x, y) | - | 必须 open() 打开的标签页 |
moveTo(x, y) | - | 必须 open() 打开的标签页 |
scroll()、scrollBy()、scrollTo() 区别
这三个方法的语法一样,参数都是两种:
scroll(x, y)
以左上角 0 0 原点,向右距离为 x,向下为 yscroll({ left: x, top: y, behavior: 'auto' })
behavior
表示滚动行为,三种情况:smooth
(平滑滚动),instant
(瞬间滚动),默认值auto
区别:
scroll()
与scrollTo()
方法效果一样,以文档左上角为原点scrollBy()
以当前左上角为原点进行滚动,也就是当前位置进行累加