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 相关文章推荐
让firefox支持IE的一些方法的javascript扩展函数代码
Jan 02 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
JSON 数据格式介绍
Jan 13 Javascript
javascript中方便增删改cookie的一个类
Oct 11 Javascript
javascript 图片裁剪技巧解读
Nov 15 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
Dec 01 Javascript
jQuery基本选择器和层次选择器学习使用
Feb 27 Javascript
微信小程序实现页面浮动导航
Jan 08 Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 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 可阅读随机字符串代码
2010/05/26 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
2019/02/14 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
javascript 类定义的4种方法
2009/09/12 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python魔术方法详解
2015/02/14 Python
python检测是文件还是目录的方法
2015/07/03 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python构建网页爬虫原理分析
2017/12/19 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
pygame实现弹球游戏
2020/04/14 Python
基于python实现对文件进行切分行
2020/04/26 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
个人授权委托书范本
2014/09/14 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS