BOM(Browser Object Model):浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。
BOM由一系列相关的对象构成,并且每个对象都提供了很多方法和属性。
BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。
DOM:
BOM:
window对象是浏览器的顶级对象,一方面,它是js访问浏览器窗口的一个接口;另一方面,它是一个全局对象,定义在全局作用域中的变量、函数都会变成window对象的属性和方法。
在调用时可以省略window。
window.onload = function() { }
window.addEventListener('load',function() { })
document.addEventListener('DOMContentLoaded',fuction() { })
le9以上才支持
window.onresize:当浏览器窗口大小发生改变时触发该事件。
window.onresize = function() { }
window.addEventListener('resize',function() { })
window对象为我们提供了两个非常友好的方法:setTimeout、setInterval。
setTimeout:在给定的时间(以毫秒为单位)之后,执行函数,返回值是一个定时器对象。
window.setTimeout(function() { },时间)
clearTimeout:清除setTimeout定时器对象。
window.clearTimeout(定时器对象)
setInterval方法重复调用一个函数,每隔这个时间,就会调用一次回调函数。
window.setInterval(function() {},时间)
clearInterval方法取消了先前通过调用setInterval( )建立的定时器。
window.clearInterval(定时器对象)
JavaScript的一个特点是单线程,也就是说,同一个时间只能做一件事。
这是因为JavaScript这门脚本语言诞生的使命所致,JavaScript是为处理页面中用户的交互以及操作DOM而诞生的。
单线程也就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。
这样导致的问题是,如果js执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。
进程:程序的一次动态运行,有独立的内存空间
线程:是进程的运行单位,一个进程可以分为若干个线程
为了解决这个问题,利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程。
于是,js中出现了同步和异步。
同步:前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。
异步:在做一件事情的同时去做其他的事情。
区别:执行顺序不同。
同步任务:同步任务都在主线程上执行,形成一个执行栈。
异步任务:js的异步是通过回调函数实现的, 异步任务相关回调函数添加到任务队列中(任务队列也称为消息队列)。
一般而言,异步任务有以下三种类型:
console.log(1)
document.onclick = function() {
console.log('click')
}
console.log(2)
setTimeout(function() {
console.log(3)
},3000)
//执行结果:1 2 3 click 或 1 2 click 3
执行机制示意图:
由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环(event loop)。
window对象给我们提供了一个location属性用于获取或设置窗体的url,并且可以用于解析url。
因为这个属性返回的是一个对象,所以我们将这个属性也称为location对象。
统一资源定位符(Uniform Resource Locator,URL)是互联网上标准资源的地址,互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL的一般语法格式:
protocol://host[:port]/path/[?query]#fragment
http://www.itcast.cn/index.html?name=andy&age=19#link
navigator对象包含有关浏览器的信息,它有很多属性,我们最常用的是userAgent,该属性可以返回由客户机发送服务器的user-agent头部的值。
javaEnabled( ):指定是否在浏览器中启用java。
window对象给我们提供了一个history对象,与浏览器历史记录进行交互。
该对象包含用户(在浏览器窗口中)访问过的URL。
history.length:返回历史列表中的网址数