当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JavaScript 闭包在封装函数时的简单分析

Javascript
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
用Javascript读取中文COOKIE的解决办法
功能很全的精品JS计算器
永不消失的title提示代码
一直复略了的一个问题,关于表单重复提交
初探jquery——表单应用范例
懒就要懒到底——鼠标自动点击(含时间判断)
关于表单的两点交互体验改进技巧
javascript知识点收藏
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
如何使页面打开时input就被选中?
点选TOP后并不是直接跳到页顶的,而是滚动上去的
js玩一玩WSH吧
【最新漏洞】IE中使用Rds.DataSpace下载并运行病毒文件
select选择事件问题
SUN的《AJAX与J2EE》全文译了
你真的了解JavaScript吗?
极酷的javascirpt,让你随意编辑任何网页
用javascript编写的第一人称射击游戏
轻轻松松学习JavaScript

Javascript 中的 JavaScript 闭包在封装函数时的简单分析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 319 ::
收藏到网摘: n/a

近才开始系统的研究js,对js的兴趣源于对JQuery的应用。之前只会用js做简单的计算函数,后来由于需要做特效,故接触JQ,看着API,基本的特效都能完成,但相反,如果用js去实现,估计自己很难写得出来,所以下定决心系统的看看js。 wbkt2t最近发现了一个新名词:闭包。(自己落后了,要好好学习才行),baidu、google看了一下原理和实例,也明白了闭包的强大。JQuery也把闭包发扬光大了,网上一些个人开发的框架都是用了闭包了功能。知道了闭包的原理和使用发放,于是自己小小试验了一把,带着疑惑:使用闭包有什么好处?不使用会出现什么后果?写下了以下代码,也希望大家给小弟一些解答
使用闭包:
实例1
复制代码 代码如下:

var $Darren;
(function(){
var Obj={version:"1.0",author:"Darren"};
Obj.Add=function(arg1,arg2){
return (arg1+arg2);
}
Obj.Multi=function(arg1,arg2){
return (arg1*arg2);
}
$Darren=Obj;
})(); //匿名函数,并使其马上执行
alert($Darren.Add(6,2)); //结果 8
alert($Darren.Multi(3,5)); //结果15

不使用闭包代码:
实例2
复制代码 代码如下:

var $Darren2={version:"1.0",author:"Darren"};
$Darren2.Add=function(arg1,arg2){
return (arg1+arg2);
}
$Darren2.Multi=function(arg1,arg2){
return (arg1*arg2);
}
alert($Darren2.Add(6,2)); //结果 8
alert($Darren2.Multi(3,5)); //结果15

我的理解是:
.使用闭包后可以防止命名冲突,如在实例1中,如果$Darren变量冲突只需改两处地方,而在实例2中,如果$Darren2变量冲突则需该多处(这里是3处)
.使用闭包后,即使匿名函数执行完毕,但是还可以使用其内部的函数。
还有我有个疑惑就是:
为什么大家都推荐实例1的写法,实例1和实例2哪个更好,为什么?一样能实现的功能。
希望大家指点小弟,这样理解对不对?
还有什么补充的。
谢谢大家~~~