BOM即浏览器对象模型,它提供了独立于内容而与浏览器窗口交互的对象 , 其核心对象是window
由一系列对象构成 , 并且每个对象都提供了很多方法和属性
window对象是浏览器的顶级对象,具有双重角色
注意:特殊属性window . name
window . onload 是窗口加载事件 , 当文档内容完全加载完成后会触发该事件(包括图像、CSS、文件),就调用的处理函数
注意:
有了window . onload就可以把JS写到页面元素的上方 , 因为 onload 是等页面内容全部加载完毕 ,再去执行处理函数
window . onload 传统注册事件方式只能写一个 , 如果有多个 , 会以最后一个window . load为准
如果使用addEventListener则没有限制
DOMContentLoaded事件
document.addEventListener('DOMContentLoaded',function(){})
DOMContentLoaded事件触发时 , 仅当DOM加载完成 , 不包括样式表 , 图片 , flash
window . onresize 是调整窗口大小加载事件 ,当触发时就调用的处理函数
注意:
只要窗口大小发生像素变化 , 就会触发这个事件
我们经常利用这个事件完成响应式布局 , window . innerWidth 当前屏幕的宽度
window . setTimeout ( 调用函数,[ 延迟的毫秒数 ] )
window . setTimeout()方法用于设置一个定时器 ,该定时器在定时器到期后执行调用函数
注意
里面的函数也称为回调函数callback
普通函数是按照代码顺序直接调用
而回调函数需要等待时间 , 时间到了才去调用这个函数 , 因此称为回调函数
window . clearTimeout(timeout ID)
注意:window可以省略 , 里面参数就是定时器的标识符
window . setInterval(回调函数 , [ 间隔的毫秒数 ])
setInterval()方法重复调用一个函数 , 每隔这个时间 , 就去调用一次回调函数
注意
window . clearInterval()方法取消了先前通过调用setInterval()建立的定时器
注意:window可以省略 , 里面参数就是定时器的标识符
this的指向在函数定义的时候是确定不了的 , 只有函数执行的时候才能确定this到底指向谁 ,一般情况下this的最终指向是那个调用它的对象
前一个任务结束再执行下一个任务、程序的执行顺序与任务的排列顺序是一致的
同步任务
在主线程上执行 , 形成一个执行栈
在做一件事的时候,因为这件事会处理很长时间,可以用这些时间处理其他事情
异步任务
一般来说 , 异步任务是通过回调函数来实现的
有三种类型:
异步任务相关回调函数添加到任务队列中(也称消息队列)
本质区别:各个流程的执行顺序不同
由于主线程不断重复获得任务,执行任务,再获取,再执行这种机制被称为事件循环