JavaScript闭包在封装函数时的浅见

最近才开始系统的研究js,对js的兴趣源于对JQuery的应用。之前只会用js做简单的计算函数,后来由于需要做特效,故接触JQ,看着API,基本的特效都能完成,但相反,如果用js去实现,估计自己很难写得出来,所以下定决心系统的看看js。

最近发现了一个新名词:闭包。(自己落后了,要好好学习才行),baidu、google看了一下原理和实例,也明白了闭包的强大。JQuery也把闭包发扬光大了,网上一些个人开发的框架都是用了闭包了功能。知道了闭包的原理和使用发放,于是自己小小试验了一把,带着疑惑:使用闭包有什么好处?不使用会出现什么后果?写下了以下代码,也希望大家给小弟一些解答

使用闭包:

实例1

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

不使用闭包代码

实例2

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

我的理解是:

1.使用闭包后可以防止命名冲突,如在实例1中,如果$Darren变量冲突只需改两处地方,而在实例2中,如果$Darren2变量冲突则需该多处(这里是3处)

2.使用闭包后,即使匿名函数执行完毕,但是还可以使用其内部的函数

还有我有个疑惑就是:为什么大家都推荐实例1的写法,实例1和实例2哪个更好,为什么?一样能实现的功能

转自:http://www.cnblogs.com/wbkt2t/

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...