BOM,全名为Browser Object Model,翻译过来为浏览器对象模型。
DOM是将HTML文档中的各个元素封装成一个对象(Document),而BOM则是将一个浏览器的各个组成部分封装成对象(Browser)供调用使用。
下面我们就来分析BOM其中包含哪几个对象以及其中的信息吧。
Window对象:浏览器窗口对象
Navigator:浏览器对象
Screen:浏览器所处客户端的显示器屏幕对象History:浏览器当前窗口的访问历史记录对象
Location:浏览器当前窗口的地址栏对象
Window对象的属性
在BOM中,window对象就已经包含了大部分的对象,而通过对window对象的属性访问,同样可以获取到其他的BOM对象的引用。
以下是各个BOM对象通过window对象获取的方式:
Location对象
location对象代表浏览器窗口中的地址栏,和window对象一样,无需特殊的创建方式,通过对象名就可使用,并调用其中的方法:
location.方法名();
或window .location.方法名();
防抖
在进行窗口的resize、scroll、输出框内容校验等操纵的时候,如果事件处理函数调用的频率无限制,会加重浏览器的负担,导致用户体验非常之差。那么为了前端性能的优化也为了用户更好的体验,就可以采用防抖(debounce)和节流(throttle)的方式来到达这种效果,减少调用的频率。
函数防抖是指当一个动作连续触发,只执行最后一次。好比我们打英雄联盟或者王者荣耀的时候,比如你按下了回城键,那么在8秒钟之后,就会执行回城事件,但如果你再次按下回城键,那么回城时间又将重新计时,需要在等8秒才会执行回城事件。
函数节流是指一定时间内js方法只跑一次。好比我们打英雄联盟或者王者荣耀的时候,释放技能都有一段冷却时间,比如Q技能有5秒的冷却时间,那么我们在5秒钟的时间内只能释放一次Q技能。
例如,都设置时间频率为500ms,在2秒时间内,频繁触发函数,节流,每隔500ms就执行一次。防抖,则不管调动多少次方法,在2s后,只会执行一次。