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读取Xml文件做一个二级联动菜单示例
Mar 17 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
Oct 17 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
Oct 20 Javascript
跟我学习javascript的this关键字
May 28 Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 Javascript
vue-router 权限控制的示例代码
Sep 21 Javascript
Angular表格神器ui-grid应用详解
Sep 29 Javascript
node+express框架中连接使用mysql(经验总结)
Nov 10 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
May 15 Javascript
vue-router的两种模式的区别
May 30 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
Oct 15 Javascript
js实现简单贪吃蛇游戏
May 15 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垃圾代码优化操作代码
2010/08/05 PHP
2014过年倒计时示例
2014/01/31 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
wxPython窗口的继承机制实例分析
2014/09/28 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
Python实现的简单计算器功能详解
2018/08/25 Python
简单了解Django ContentType内置组件
2019/07/23 Python
Python线程threading模块用法详解
2020/02/26 Python
python实现文件分片上传的接口自动化
2020/11/19 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
中秋手机店促销方案
2014/06/16 职场文书
离职感谢信怎么写
2015/01/22 职场文书
小学生手册家长意见
2015/06/03 职场文书
关于环保的宣传稿
2015/07/23 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书