JavaScript Window对象的生命周期
Window 对象是客户端 JavaScript 中的一个关键对象,是位于作用域链头部的全局对象,JavaScript中的所有客户端对象都是作为其对象的属性存取的。现在,我们就来简单了解一下 Window 对象的生命周期。
Window 对象和浏览器窗口1:
一个新文档被装载到窗口或框架中时,那个窗口或框架的 Window 对象就会被重置为默认状态,即由前一个文档中的脚本定义的所有属性和函数都将被清除所有存在过的痕迹。其与前一个此窗口打开的文档无半点瓜葛,出身是绝对的清白。
Window 对象和浏览器窗口2:
只要浏览器的顶级窗口存在,那么代表它的Window对象就会一直存在。无论有多少个页面像走城门一样在这个窗口中来来去去,只要浏览器的顶级窗口存在,对它的 Window 对象的引用都有效。这个顶级窗口打开多久,它的Window对象就会戚多久。其生命周期被视为浏览器进程从开始到结束的整个过程。
Window 对象和浏览器窗口3:
当窗口关闭,这个Window对象也不会被销毁,如果在其他窗口中依旧存在对这个Window对象的引用,那么这个对象就不会被无用存储单元回收,虽然这并没有啥实际作用了。
这就好比是frame A 含有一个脚本,它引用了 frame B的 Window 对象,即使 frame B的url地址已经改变,但是frameA对frame B的Window对象的引用依然有效。虽然其已经被重置为默认值,只有一个只读属性closed存在了。
一点点解释:
浏览器窗口引用的 Window 对象是 window 句柄总是存在的。 Window 对象的生命周期可以视为浏览器进程从开始到结束的整个过程。下面代码可以证明 Window 对象的生命周期。嗯。。在书上抄来的,借来一用。呵。
<head><title>Window 对象生命周期</title></head>
<body>
<script type='text/javascript'>
new_win = {};
function createWin()
{
//创建一个新的窗口,new_win为新窗口的引用句柄
new_win = window.open();
new_win.document.write("<input type='button' onclick='window.close();' value='close me'></input>");
}
</script>
<input type='button' onclick='createWin();' value='click me creat win'></input>
<input type='button' onclick='alert(new_win.closed);' value=' alert new win closed status'></input>
</body>
</html>
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/09/08/1444/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
我也来坐个沙发,最近这两天换了电脑,忙活着装系统,装东西,昨天也犯懒都没更新。
[回复]
@LAONB
我最近也懒的很,每天就想睡觉。呵呵。
[回复]
大家都慢慢变懒了!
[回复]
老饕严重申明:俺也变懒了~~哈哈,这几天还有点忙~~
[回复]
该脚本貌似不能解释3种周期
[回复]
@bolo
这段脚本只是为了解释:Windows的生命周期是——只要浏览器的顶级窗口存在,那么代表它的Window对象就会一直存在。
[回复]