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 相关文章推荐
JavaScript String.replace函数参数实例说明
Jun 06 Javascript
弹出最简单的模式化遮罩层的js代码
Dec 04 Javascript
使用jQuery设置disabled属性与移除disabled属性
Aug 21 Javascript
javascript面向对象之对象的深入理解
Jan 13 Javascript
js实现可兼容IE、FF、Chrome、Opera及Safari的音乐播放器
Feb 11 Javascript
jQuery实现下拉框选择图片功能实例
Aug 08 Javascript
JS使用post提交的两种方式
Dec 03 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
Feb 12 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
Apr 25 Javascript
vue实现简易计算器功能
Jan 20 Vue.js
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函数解决SQL injection
2006/10/09 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
javascript调试说明
2010/06/07 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
每日十条JavaScript经验技巧(一)
2016/06/23 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
Django中Forms的使用代码解析
2018/02/10 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
通过Python实现一个简单的html页面
2020/05/16 Python
python的json包位置及用法总结
2020/06/21 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
《生命 生命》教学反思
2014/04/19 职场文书
保护环境倡议书500字
2014/05/19 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
海洋天堂观后感
2015/06/05 职场文书
大队委员竞选稿
2015/11/20 职场文书
2016幼儿园中班开学寄语
2015/12/03 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL
Redis批量生成数据的实现
2022/06/05 Redis