易截截图软件、单文件、免安装、纯绿色、仅160KB

JavaScript Closure(闭包) 那些事

1 一起困惑始于变量的作用域
请先看下面的代码:
示例1:
     var message = " this is a very simple function ";
     function simpleFunc(){
             alert(message);
     }
背后的道理大家都懂(如果不懂的可以先别往下看了):一个function能够访问其自身及其更外层的作用域内的变量。
请再继续看下面这段代码:
示例2:   
     var message = " this is a very simple function ";
     function simpleFunc(){
             var name = "robin";
             function secretFunc(){
                        return "Hi, "+name+ ", "+message;
             }
             return secretFunc;
     }
     var magicFunc = simpleFunc();
     var result = magicFunc(); // result的值是: Hi, robin, this is a very simple function
好了,困惑的地方来了,magicFunc是一个global的变量,居然访问到了simpleFunc内部的变量'name' !!这正是Javascript之神奇的闭包在起作用,simpleFunc返回的secretFunc对象就是一个闭包,那么到底什么是闭包?
2 拨开云雾见青天
简言之,闭包就是function中的function。
简言之,闭包的作用:1)保证function对象在内存中不被回收;2)访问其它函数内部的变量。
对于第1)点的理解可以结合着示例2来看。magicFunc这个global变量保存了对于secretFunc的引用,因此secretFunc会一直在内存中而不会被自动回收;此外,secretFunc作为simpleFunc的属性,simpleFunc也不会被回收。
对于第2)点的理解需要首先看看closure的定义。在Mozilla的Core JavaScript 1.5 Guide中有这么一句话:A closure is a special kind of object that combin


相关文档:

JavaScript捕获窗口关闭事件

JavaScript捕获窗口关闭事件
关键字: window.close事件
javascript捕获窗口关闭事件有两种方法
1.用javascript重新定义 window.onbeforeunload()  事件
在javascript里定义一个函数即可
function  window.onbeforeunload()  {  alert("关闭窗口")}
alert()事件将会在关闭窗口前执行,你也可以用 ......

[JavaScript] 《精通JavaScript》学习(四)~面向对象

     
     prototype精彩资料:
     "javascript之prototype" http://www.cnblogs.com/zouhaijian/archive/2009/03/29/1424592.html(很简约但清晰的讲述了prototype的用途)
     "JavaScript对象模型-执行模型" http://w ......

利用JavaScript在网页上实现shell功能

(一)开始
         从WIN95起,WIN系统的一些基本功能被封装在符合通用对象模式COM(Common Object Mode)标准的OLE组件中,在网页上可通过JavaScript语言调用shell实现一些系统功能。用JavaScript调用shell是通过ActiveXObject来实现的,见下:
      ......

【原创】JavaScript幻灯片小实例及教程(JsBox v1.2)

需要运行环境:.net framework 3.0及以上运行环境支持。
有喜欢的看看吧,
内附精心制作的JS效果的幻灯片(主要使用jQuery库),以及其帮助,演示,代码可以下载,工具免费使用。
下载地址:http://www.codeex.cn/blog/article.asp?id=62 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号