窗口对象
BOM的核心是窗口对象,代表一个浏览器实例对象,window对象有两个主要作用,一个是作为浏览器窗口的JavaScript接口,另一个作用是作为ECMAScript的全局对象,这意味着在一个网页中定义的对象、变量、函数都使用window作为全局对象。
全局作用域
由于window对象是全局对象,那么所有使用var关键字定义的变量和函数,都会变成属于window的属性和方法。
注意:访问为定义的变量会抛出错误,但是可以通过window对象检查是否有潜在的未定义的变量。
举个栗子
var newValue = oldValue;
这行代码会直接报错,因为oldValue没有定义
var newValue = window.oldValue;
console.log(newValue);
这段代码不会报错,是访问window对象的属性,检查发现undefined。
window间的关系
最上层的对象一直指向最上层的window,浏览器window本身,另一个window被称为父window。父对象指向当前window紧挨着父window,最上层的浏览器window与父window是相同,最上层的window永远不会给name属性设置值,除非使用window.open()方法打开window。
window的尺寸
window的尺寸可以通过4个属性设置,innerWidth、innerHeight、outerWidth、outerHeight,outer返回的是浏览器window自身的尺寸,inner返回的是整个浏览器内页面视图的大小。window可以调用方法reisizeTo()方法和reisizeBy()方法调整window大小。
location对象
BOM中最实用之一的另一个对象,location对象,可以提供当前window加载的文件信息和一般的导航功能,对于window和document,location对象都是唯一的,window.location和document.location指向的是相同的对象。
操作location对象
操作location对象有很多方法,第一个最常用的assign()方法,里面可以传入URL,调用后会立刻导航到指定的URL
location.assign("https://www.baidu.com")
还有两个属性可以实现一样的效果
window.location = 'https://www.baidu.com'
location.href = 'https://www.baidu.com'