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


Posted in Javascript onNovember 28, 2009

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哪个更好,为什么?一样能实现的功能。

希望大家指点小弟,这样理解对不对?
还有什么补充的。
谢谢大家~~~

Javascript 相关文章推荐
Jquery提交表单 Form.js官方插件介绍
Mar 01 Javascript
深入理解JavaScript系列(15) 函数(Functions)
Apr 12 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
Javascript中Array.prototype.map()详解
Oct 22 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
Mar 05 Javascript
jQuery Ajax使用实例
Apr 16 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
Jun 09 Javascript
JavaScript对象创建模式实例汇总
Oct 03 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
详解layui中的树形关于取值传值问题
Jan 16 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
微信小程序单选框自定义赋值
May 26 Javascript
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 #Javascript
Javascript 复制数组实现代码
Nov 26 #Javascript
js setattribute批量设置css样式
Nov 26 #Javascript
Javascript 二维数组
Nov 26 #Javascript
isArray()函数(JavaScript中对象类型判断的几种方法)
Nov 26 #Javascript
Exitjs获取DataView中图片文件名
Nov 26 #Javascript
网页中的图片的处理方法与代码
Nov 26 #Javascript
You might like
php实现的双向队列类实例
2014/09/24 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
php防止sql注入简单分析
2015/03/18 PHP
php把数组值转换成键的方法
2015/07/13 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python实现合并字典的方法
2015/07/07 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
django正续或者倒序查库实例
2020/05/19 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
应届毕业生自我评价分享
2013/12/15 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
机械专业求职信范文
2014/07/15 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
单位政审意见范文
2015/06/04 职场文书
二十年同学聚会感言
2015/07/30 职场文书
获奖感言怎么写
2015/07/31 职场文书
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android