浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话"。
浏览器对象模型(Browser Object Model (BOM))尚无正式标准。
由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是 BOM 的方法和属性。
所有浏览器都支持 window 对象。它表示浏览器窗口。
所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
全局变量是 window 对象的属性。
全局函数是 window 对象的方法。
甚至 HTML DOM 的 document 也是 window 对象的属性之一:
window.document.getElementById("header");
与此相同:
document.getElementById("header");
有三种方法能够确定浏览器窗口的尺寸。
代码实例:
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; x=document.getElementById("demo"); x.innerHTML="浏览器window宽度: " + w + ", 高度: " + h + "。"
三种方式分别对应的是:
Internet Explorer、Chrome、Firefox、Opera 以及 Safari
Internet Explorer 8、7、6、5
Internet Explorer 8、7、6、5
第二种和第三种是Internet Explorer 8、7、6、5浏览器的两种不同写法。
一些其他方法:
- window.open() - 打开新窗口
- window.close() - 关闭当前窗口
- window.moveTo() - 移动当前窗口
- window.resizeTo() - 调整当前窗口的尺寸
定义全局变量与在 window 对象上直接定义属性差别。
1、全局变量不能通过 delete 操作符删除;而 window 属性上定义的变量可以通过 delete 删除
var num=123; window.str="string"; delete num; delete str; console.log(num); //123 console.log(str); //str is not defined //全局变量不能通过 delete 删除,因为通过 var 定义全局变量会有一个名为 [Configurable] 的属性,默认值为 false,所以这样定义的属性不可以通过 delete 操作符删除
2、访问未声明的变量会抛出错误,但是通过查询 window 对象,可以知道某个可能未声明的变量是否存在。
var newValue=oldValue; // 报错:oldValue is not defined var newValue=window.oldValue; // 不会报错 console.log(newValue); // undefined
3、有些自执行函数里面的变量,想要外部也访问到的话,在 window 对象上直接定义属性。
文章内容取自:https://www.runoob.com/js/js-window.html