欢迎关注 前端公众号【小夭同窗】 前端
ECMAScript是JavaScript的核心,但若是要在web中使用JavaScript,那么BOM则是真正的核心,BOM提供了不少对象,用于访问浏览器的功能,这些功能与任何网页内容无关。web
BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是经过JS访问浏览器窗口的一个接口,又是ES规定的Global对象。这意味着在网页中定义的任何一个对象、变量和函数,都以window做为其Global对象,所以有权访问 parseInt()等方法,编程
因为 window对象同时扮演着ES中的Global对象的角色,所以全部在全局做用域中声明的变量,函数都会变成window对象的属性和方法。segmentfault
var age = 29
function sayAge() {
console.log(this.age)
}
console.log(window.age) // 29
sayAge() // 29
window.sayAge() // 29
复制代码
敲重点:window Mobile 平台的 IE浏览器不容许经过 window.property = value 之类的形式,直接在 window 对象上建立新的属性或方法,但是,在全局做用域中声明的全部变量和函数,照样会变成 window对象的成员。数组
若是页面中包含框架,则每一个框架都拥有本身的window对象,而且保存在 frames 集合中。在 frames集合中,能够经过数值索引或者框架名称来访问相应的window对象,每一个window对象都有一个name属性,其中包含框架的名称。浏览器
敲重点:在使用框架的状况下,浏览器中会存在多个Global对象。在每一个框架中定义的全局变量会自动成为框架中 window 对象的属性,因为每一个window对象都包含原生类型的构造函数,所以每一个框架都有一套本身的构造函数,这些构造函数一一对应,但并不相等。bash
用来肯定和修改 window 对象位置的属性和方法不少。IE、Chrome都提供了 screenLeft 和 screenTop属性,分别用于表示窗口相对于屏幕左边和上边的位置。服务器
敲重点:获取位置的方法在每一个浏览器中获取的值也并不同,须要针对特定的浏览器作特定的判断。微信
每一个不一样的浏览器都提供了 innerWidth、innerHeight、outerWidth和outerHeight。可是在不一样的浏览器中,它们获取的值边界也是不同的。框架
咱们能够经过 window.open() 打开一个特定的URL,也能够打开一个新的浏览器窗口。这个方法能够接受四个参数:须要加载的URL、窗口目标、特性字符串和一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值。一般只须要一个URL参数便可。
由于 JS是单线程语言,但它容许经过设置超时值和间歇时间值来调度代码在特定的时刻执行。前者是在指定的时间后执行代码,然后者则是每一个指定的时间执行一次代码。方法以下
setTimeout('方法名','延迟执行时间')
复制代码
敲重点: 调用setTimeout以后,该方法会返回一个数值ID,表示超时调用。这个ID就是这个延迟执行的惟一标识符,能够经过它来取消超时调用。
clearTimeout(timeoutId)
复制代码
超时调用的代码都是在全局做用域中执行的,所以函数中this的值一般会指向window对象。
setInterval('方法名','间个时间')
clearInterval(intervalId)
复制代码
location 是最有用的BOM对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能。经常使用的就是用来打开新页面等。 参数以下:
属性名 | 说明 |
---|---|
hash | 返回URL中的hash #在后面,若是URL中没有则返回空字符串 |
host | 返回服务器端口号 |
hostname | 返回不带端口号的服务器名称 |
herf | 返回当前页面的URL |
pathname | 返回URL中的目录或文件 |
port | 返回URL中指定的端口号 |
protocol | 返回页面使用的协议 |
search | 返回URL的查询字符串 |
经过 location.search 能够查询URL中包含的参数,根据 & 符号来分割查询字符串,并返回name-value格式的字符串数组。
使用 location 对象能够经过不少方式来改变浏览器的位置。使用 assign() 方法并为其传递一个URL ,这样就能够当即打开新的URL并在浏览器的历史记录中生成一条记录
保存着用户上网的历史记录,从窗口被打开的那一刻算起。由于history是window对象的属性,所以每一个浏览器窗口、每一个标签乃至每一个框架,都有本身的history对象与特定的window对象关联。
能够在用户的历史记录中任意跳转。能够向前或向后。接受一个参数,表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转,正数表示向前跳转。
能够模仿浏览器的后退操做
模仿浏览器的前进按钮
浏览器对象模型(BOM)以window对象为依托,表示浏览器窗口以及页面可见区域。同时,window对象仍是ES中的Global对象,于是全部全局变量和函数都是它的属性,且全部原生的构造函数及其余函数也都存在于它的命名空间下。
在使用框架时,每一个框架都有本身的window对象以及全部原生构造函数及其余函数的副本。每一个框架都保存在frames集合中,能够经过位置或名称来访问。
重学js系列
重学js之JavaScript 面向对象的程序设计(建立对象)
ES6入门系列
Git教程
Python玩转微信