当前位置: 编程技术>WEB前端
本页文章导读:
▪js闭包 先从闭包特点解释,应该更好理解.闭包的两个特点:1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。其实.........
▪网页文字中间加横线 ......
▪开源 免费 java CMS - FreeCMS1.2-功能说明-会员组管理
下载地址:http://code.google.com/p/freecms/
会员组管理
从FreeCMS 1.2 开始支持
会员组分为两种,一级是经验会员组,一种是特殊会员组。
经验会员组的会员会根据经验自动变更,特殊会.........
[1]js闭包
先从闭包特点解释,应该更好理解.
闭包的两个特点:
1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
其实上面两点可以合成一点,就是闭包函数返回时,该函数内部变量处于激活状态,函数所在栈区依然保留.
我们所熟知的主流语言,像C,java等,在函数内部只要执行了return,函数就会返回结果,然后内存中删除该函数所在的区域.生命周期也就停止了.一般的js函数也是这样.
但是有闭包特性的js函数有点特殊.
就例子来说:
var c = a();
c();
这两句执行很重要.
在var c = a();这行里,执行了a函数,那么肯定a经过了return.按照主流语言的函数特性,现在c的值就是a的返回值.
第二行c()的执行实际执行的就是b函数.最后不管执行的是谁,会弹出一个值为0的窗口,到此为止,所有的生命周期按理论来说就算全部结束了.
可是,如果我们再多执行一行.
var c = a();
c();
c();
第一次弹出0,第二次执行却弹出了1.
也就是说,第一次c()后,a中的i依然保留.自然a在内存的栈区依然保留.
a是return过了,但是,a及内部值却依然存在,这就是闭包.
好了,总结下,
1,闭包外层是个函数.
2,闭包内部都有函数.
3,闭包会return内部函数.
4,闭包返回的函数内部不能有return.(因为这样就真的结束了)
5,执行闭包后,闭包内部变量会存在,而闭包内部函数的内部变量不会存在.
闭包的应用场景(呵呵,复制的参考资料)
1、保护函数内的变量安全。以最开始的例子为例,函数a中i只有函数b才能访问,而无法通过其他途径访问到,因此保护了i的安全性。
2、在内存中维持一个变量。依然如前例,由于闭包,函数a中i的一直存在于内存中,因此每次执行c(),都会给i自加1。
根据参考资料的应用场景,我们会自然的想到java或是c++的类.虽然JS没有类的概念,但是有了类的相似执行结果.
另外,还有一种格式颇受争议:
(function(a,b))(a,b);
如果你使用过jquery,并且观察过他的代码,你就会很奇怪他的写法,网上有人也把这种格式叫做闭包.引用:http://www.cnblogs.com/rorchach/archive/2013/03/03/2941374.html
闭包的两个特点:
1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
其实上面两点可以合成一点,就是闭包函数返回时,该函数内部变量处于激活状态,函数所在栈区依然保留.
我们所熟知的主流语言,像C,java等,在函数内部只要执行了return,函数就会返回结果,然后内存中删除该函数所在的区域.生命周期也就停止了.一般的js函数也是这样.
但是有闭包特性的js函数有点特殊.
就例子来说:
1 function a(){
2 var i=0;
3 function b(){
4 alert(++i);
5 }
6 return b;
7 }
8 var c = a();
9 c();
这是个标准的闭包.在函数a中定义了函数b,a又return了b的值.这些可以先不管.2 var i=0;
3 function b(){
4 alert(++i);
5 }
6 return b;
7 }
8 var c = a();
9 c();
var c = a();
c();
这两句执行很重要.
在var c = a();这行里,执行了a函数,那么肯定a经过了return.按照主流语言的函数特性,现在c的值就是a的返回值.
第二行c()的执行实际执行的就是b函数.最后不管执行的是谁,会弹出一个值为0的窗口,到此为止,所有的生命周期按理论来说就算全部结束了.
可是,如果我们再多执行一行.
var c = a();
c();
c();
第一次弹出0,第二次执行却弹出了1.
也就是说,第一次c()后,a中的i依然保留.自然a在内存的栈区依然保留.
a是return过了,但是,a及内部值却依然存在,这就是闭包.
好了,总结下,
1,闭包外层是个函数.
2,闭包内部都有函数.
3,闭包会return内部函数.
4,闭包返回的函数内部不能有return.(因为这样就真的结束了)
5,执行闭包后,闭包内部变量会存在,而闭包内部函数的内部变量不会存在.
闭包的应用场景(呵呵,复制的参考资料)
1、保护函数内的变量安全。以最开始的例子为例,函数a中i只有函数b才能访问,而无法通过其他途径访问到,因此保护了i的安全性。
2、在内存中维持一个变量。依然如前例,由于闭包,函数a中i的一直存在于内存中,因此每次执行c(),都会给i自加1。
根据参考资料的应用场景,我们会自然的想到java或是c++的类.虽然JS没有类的概念,但是有了类的相似执行结果.
另外,还有一种格式颇受争议:
(function(a,b))(a,b);
如果你使用过jquery,并且观察过他的代码,你就会很奇怪他的写法,网上有人也把这种格式叫做闭包.引用:http://www.cnblogs.com/rorchach/archive/2013/03/03/2941374.html
本文链接
[2]网页文字中间加横线
来源: 互联网 发布时间: 2013-11-06
网页文字中间加横线打杠比较简单, 有个非标的html标签可以用: <strike>
<strike>已经过期</strike> 显示就是: 已经过期
作者:ituff 发表于2013-3-4 11:08:06 原文链接
阅读:0 评论:0 查看评论
[3]开源 免费 java CMS - FreeCMS1.2-功能说明-会员组管理
来源: 互联网 发布时间: 2013-11-06
下载地址:http://code.google.com/p/freecms/
会员组管理
从FreeCMS 1.2 开始支持
会员组分为两种,一级是经验会员组,一种是特殊会员组。
经验会员组的会员会根据经验自动变更,特殊会员组不会自动变更,需要管理员手工设置。
1. 会员组管理
从左侧管理菜单点击会员组进入。
2. 添加会员组
在会员组列表下方点击“添加”按钮。
填写相关属性后点击“保存”按钮即可。
3. 编辑会员组
选择需要编辑的会员组,然后点击“编辑”按钮。
注意:同时只能编辑一个会员组。
填写相关属性后点击“保存”按钮即可。
4. 会员组授权
选择需要授权的会员组,然后点击“授权”按钮。
注意:同时只能对一个会员组进行授权操作。
填写相关属性后点击“确定”按钮即可。
5. 删除会员组
选择需要删除的会员组,然后点击“删除”按钮。
提示:同时可以删除多个会员组。
为了防止误操作,系统会提示用户是否删除,点击“确定”完成删除操作。
作者:vkqiang 发表于2013-3-4 13:09:25 原文链接
阅读:0 评论:0 查看评论
最新技术文章: