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查看html源文件
Nov 08 Javascript
js中复制行和删除行的操作实例
Jun 25 Javascript
js实现两个值相加alert出来精确到指定位
Sep 25 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
jQuery下拉框的简单应用
Jun 24 Javascript
JavaScript递归操作实例浅析
Oct 31 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
AngularJS之页面跳转Route实例代码
Mar 10 Javascript
JS实现的点击表头排序功能示例
Mar 27 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
redux中间件之redux-thunk的具体使用
Apr 17 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
Terran历史背景
2020/03/14 星际争霸
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
php创建图像具体步骤
2017/03/13 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
PHP二维数组分页2种实现方法解析
2020/07/09 PHP
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
python属于跨平台语言码
2020/06/09 Python
Python Map 函数的使用
2020/08/28 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
html5跳转小程序wx-open-launch-weapp踩坑
2020/12/02 HTML / CSS
美国克罗格超市在线购物:Kroger
2019/06/21 全球购物
经营管理策划方案
2014/05/22 职场文书
单位工作证明格式模板
2014/10/04 职场文书
住房公积金贷款工资证明
2015/06/12 职场文书
保护动物的宣传语
2015/07/13 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
matlab xlabel位置的设置方式
2021/05/21 Python
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js