- BOM的核心对象是window ,它表示浏览器的一个实例。
- 在浏览器中,window 对象有双重角色,它既是通过JavaScript 问浏览器窗口的一个接口,又是ECMAScript规定的Global 对象。
- 在网页中定义的任何一个对象、变量和函数,都以window 作为其Global 对象。
- window 对象同时扮演着ECMAScript中Global 对象的角色,所有在全局作用域中声明的变量、函数都会变成window 对象的属性和方法。
- 定义全局变量与在 window 对象上直接定义属性的差别:使用var 语句添加的window 属性有一个名为[[Configurable]] 的特性,这个特性的值被设置为false ,因此这样定义的属性不可以通过 delete 操作符删除。,而直接在window 对象上的定义的属性可以。
- 在网页中定义的任何一个对象、变量和函数,都以window 作为其Global 对象。
- 尝试访问未声明的变量会抛出错误,但是通过查询 window 对象,可以知道某个可能未声明的变量是否存在,属性查询不会抛出错误。
- 很多全局JavaScript对象(如location 和navigator)实际上都是window对象的属性。
- ...
- ...
- ...
- ...
- JavaScript 是单线程语言,但它允许通过设置超时值和间歇时间值来调度代码在特定的时刻执行。 前者是在指定的时间过后执行代码,而后者则是每隔指定的时间就执行一次代码直至间歇调用被取消或者页面被卸载。。
- 超时调用需要使用window 对象的setTimeout()方法,它接受两个参数:要执行的代码和以毫秒表示的时间。 其中,第一个参数可以是一个包含JavaScript代码的字符串,也可以是一个函数。 传递字符串可能导致性能损失,不建议以字符串作为第一个参数。 setTimeout()的第二个参数告诉JavaScript 再过多长时间把当前任务添加到队列中 调用setTimeout()会返回一个数值 ID,表示超时调用。可以通过调用clearTimeout()方法并将相应的超时调用ID作为参数传递给它来取消超时调用。
- 设置间歇调用的方法是setInterval() ,它接受的参数与setTimeout()相同 调用setInterval() 方法也会返回一个间歇调用ID,可以使用 clearInterval() 方法并传入相应的间歇调用ID以取消尚未执行的间歇调用。
- 在使用超时调用时,没有必要跟踪超时调用ID,因为每次执行代码之后,如果不再设置另一次超时调用,调用就会自行停止。 一般认为,使用超时调用来模拟间歇调用的是一种最佳模式。 在开发环境下,很少使用真正的间歇调用,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动。 最好不要使用间歇调用。
- alert()、confirm()和prompt() 方法可以调用系统对话框向用户显示消息。 它们的外观由操作系统及(或)浏览器设置决定,而不是由 CSS 决定。 通过这几个方法打开的对话框都是同步和模态的,显示这些对话框的时候代码会停止执行,而关掉这些对话框后代码又会恢复执行。
- alert()方法会弹出“警告”对话框,接受一个字符串并将其显示给用户。 额外显示 OK按钮。 不会返回值。
- confirm()方法会弹出“确认”对话框,接受一个字符串并将其显示给用户。 额外显示 OK按钮和Cancel按钮。 点击OK会返回true,关闭或点击Cancel会返回false。
- prompt() 方法会弹出“提示”框,接受两个参数:要显示给用户的文本提示和文本输入域的默认值。 额外显示OK按钮、Cancel 按钮和文本输入域。 点击OK会返回文本输入域中的字符串,关闭或点击Cancel会返回null。
- 如果是同一次用户操作会生成两个警告框,那么第二个警告框中就会显示复选框。
- “查找”和“打印”。这两个对话框都是异步显示的,能够将控制权立即交还给脚本。 这两个对话框与用户通过浏览器菜单的“查找”和“打印”命令打开的对话框相同。 在 JavaScript 中则可以通过window 对象的find() 和print()方法打开它们。 find()方法可接受字符串参数,返回true或false。
来源: JavaScript高级程序设计