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 EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
js获取url中指定参数值的示例代码
Dec 14 Javascript
javascript实现des解密加密全过程
Apr 03 Javascript
jQuery的ready方法详解
Nov 27 Javascript
修复bash漏洞的shell脚本分享
Dec 31 Javascript
JS实现自定义弹窗功能
Aug 08 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
Aug 22 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
Jan 03 Javascript
js实现淘宝首页的banner栏效果
Nov 26 Javascript
vue实现简单加法计算器
Oct 22 Javascript
js之ajax文件上传
May 13 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中接口与抽象类的区别
2013/06/08 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
js常用函数 不错
2006/09/08 Javascript
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
调整小数的格式保留小数点后两位
2014/05/14 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
js实现无缝轮播图
2020/03/09 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
python实现推箱子游戏
2020/03/25 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
Python之字典添加元素的几种方法
2020/09/30 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
会计电算化毕业生自荐信
2014/03/03 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
护士个人总结范文
2015/02/13 职场文书
银行招聘自荐信
2015/03/06 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
入党团支部推荐意见
2015/06/02 职场文书
学子宴致辞大全
2015/07/27 职场文书
2016党员党课心得体会
2016/01/07 职场文书
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
2021/06/26 Python
vue里使用create, mounted调用方法
2022/04/26 Vue.js
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers