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