简介:js中的window对象详解
初学JavaScript的时候,总是会有一个疑问,为什么JS这门语言既感觉很简单,有感觉很繁琐,简单是因为它的宽松的风格,不像其他强类型语言那么严格,繁琐的是JS这门语言,又是什么ES6,又是什么DOM、BOM的。不像Python之类的语言就是Python。那么JS到底是什么,它又是由哪几部分构成的呢?
JavaScript 是一种具有函数优先的轻量级,解释型的编程语言,是一种弱类型的编程语言,由于它是作为开发Web页面的脚本语言,所以JS这门语言跟浏览器(BOM)和网页(DOM)有着密不可分的关系,所以它的组成部分也离不开宿主环境浏览器和操作对象网页了。
JavaScript由以下三个部分组成:
1、ECMAScript
ECMA是欧洲计算机制造商协会英文缩写。ECMAScript规定了JS的核心语法,如语法, 数据类型,关键字,保留字,运算符,对象等,它相当于JavaScript的"骨架",定义了JS这门语言的"基本样子",只有有了这个骨架,才能对它进行拓展,ECMAScript的版本也会一直更新,每一次的更新也是更加的完善JavaScript。
2、文档对象模型(DOM)
DOM是“Document Object Model”的缩写,简称文档对象模型,由W3C指定规范。DOM定义了JavaSCript操作 HTML 文档的接口,提供了访问 HTML文档(body、div、p等)的途径和操作方法。当浏览器载入 HTML 文档后,将整个文档规划成由节点构成的节点树,文档中的每个部分都是一个节点。
主要包含内容:DOM树(DOM规定HTML文档中的每一个元素都是一种节点)、查找文档、节点操作、css属性操作、事件event等等
3、浏览器对象模型(BOM)
BOM是“Browser Object Model”的缩写,简称浏览器对象模型。BOM定义了JavaScript操作浏览器的接口,提供了访问某些功能(如浏览器窗口大小,版本信息,浏览历史记录等)的途径和操作方法。
BOM 只是 ECMAScript 的一个扩展,它并没有任何相关标准,W3C也没有对该部分作出规范,不同的浏览器有自己的BOM实现,所以东西也是很繁杂的。
我们已经大致的了解了一下JS的基本组成,内容有点多,但是我们今天只聊一聊BOM中的window对象,后期会不断更新其他对象信息
BOM中的window对象:
Window 对象是浏览器的窗口对象。在浏览器中,Window 对象是JavaScript的全局对象,所有的表达式都在当前的环境中计算。
上图是我在网上找的一种window对象结构图:
由于 Document 对象中包含的内容太多,因此,W3C 组织将 Document 对象单独提出来,形成了一套独立的规范,命名为 DOM。
Window对象有很多自带的属性,常用的属性如下:
属性名 | 说明 |
innerHeight/innerWidth | 视口(文档显示区)宽高 |
outerHeight/outerWidth | 浏览器窗口宽高 |
screenLeft/screenTop | 浏览器左上角到屏幕左上角的距离 |
window对象常用方法:
属性名 | 说明 |
open() | 打开一个新窗口,参数是一个url |
alert() | 弹出提示框,参数是弹窗内容 |
prompt() | 弹出用户输入框,参数为提示用户输入的内存 |
close() | 关闭一个窗口 |
下面我们再来看看这些常用属性及方法的使用:
console.log('文档显示区的高', window.innerHeight);
console.log('文档显示区的宽', window.innerWidth);
console.log('浏览器窗口高', window.outerHeight);
console.log('浏览器窗口宽', window.outerWidth);
console.log('浏览器左上角到屏幕左边的距离', window.screenLeft);
console.log('浏览器左上角到屏幕顶部的距离', window.screenTop);
// 打开一个新窗口
window.open('https://www.woniuxy.com')
//弹窗提示
window.alert('提示语')
//弹出用户输入框
window.prompt('请输入你的姓名')
//关闭一个窗口
window.close()
Window对象调用属性和方法是可以省去前面的window.,也就是说,要引用当前窗口根本不需要特殊的语法,可以把那个窗口的属性作为全局变量来使用。例如,可以只写 document,而不必写 window.document。同样,可以把当前窗口对象的方法当作函数来使用,如只写 alert(),而不必写 window.alert()
除了上面列出的属性和方法,Window 对象还实现了核心 JavaScript 所定义的所有全局属性和方法。
有遗漏或者不对的可以在我的公众号留言哦