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实现表格行上下移动和置顶效果
Jun 05 Javascript
JQuery复制DOM节点的方法
Jun 11 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
angular route中使用resolve在uglify压缩后问题解决
Sep 21 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
angularJs中ng-model-options设置数据同步的方法
Sep 30 Javascript
vue-model实现简易计算器
Aug 17 Javascript
Vue.js使用axios动态获取response里的data数据操作
Sep 08 Javascript
typescript编写微信小程序创建项目的方法
Jan 29 Javascript
小程序wx.getUserProfile接口的具体使用
Jun 02 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
深入浅析用PHP实现MVC
2016/03/02 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
动态控制Table的js代码
2007/03/07 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
js三种排序算法分享
2012/08/16 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
2016/03/22 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
Python 创建守护进程的示例
2020/09/29 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
中介业务员岗位职责
2014/04/09 职场文书
大学生村官演讲稿
2014/04/25 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
本溪水洞导游词
2015/02/11 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
关于应聘教师的自荐信
2016/01/28 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL