第八章 BOM

1. BOM的核心对象时window。在浏览器中,window对象即使通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。

2.定义全局变量与在window对象上直接定义属性的区别:全局变量不能通过delete操作符删除,而直接在window对象上定义的属性可以。

3.尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的变量是否存在。

var newValue = oldValue ;//抛出错误,因为oldValue未定义

var newValue= window . oldValue;//不会抛出错误。若oldValue不存在则newValue = undefined

4.top对象始终指向最外层的框架,也就是浏览器窗口;

   parent对象始终指向当前框架的直接上层框架;

   self对象始终指向window。

5.获取窗口相对于屏幕左边和上边的位置(跨浏览器,无法取得精确坐标值):

var leftPos = ( typeof window . screenLeft == “number” ) ? window . screenLeft : window . screenX ;

var topPos = ( typeof window . screenTop == “number” ) ? window . screenTop : window . screenY ;

6.获取页面视口的大小(跨浏览器):

var pageWidth = window . innerWidth ,

      pageHeight = window . innerHeight ;

if ( typeof pageWidth != “number” ){

    if ( document . compatMode == “CSS1Compat” ){ // IE6标准模式下

        pageWidth = document . getElement . clientWidth ;

        pageHeight = document . getElement. clientHeight ;

    } else { // IE6混杂模式下

        pageWIdth = document . body . clientWidth;

        pageHeight = document . body . clientHeight ;

    }

}

7. setTimeout()的第二个参数高数JavaScript再过多长时间把当前任务添加到队列中。若队列是空的,那么添加的代码会立即执行;若队列不是空的,那么就要等前面的代码执行完了以后再执行。

8.超时调用(setTimeout())的代码都是在全局作用域中执行的,因此函数中的this的值在非严格模式下指向window对象,在严格模式下是undefined。

9.一般认为,使用超时调用来模拟间歇调用的是一种最佳模式,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动。所以最好不要使用间歇调用

    原文作者:张果果
    原文地址: https://www.jianshu.com/p/48cab981af22
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞