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中的继承实例代码
Apr 27 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
Oct 11 Javascript
jQuery+AJAX实现网页无刷新上传
Feb 22 Javascript
Bootstrap学习笔记之css样式设计(1)
Jun 07 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
vue的传参方式汇总和router使用技巧
May 22 Javascript
微信小程序实现多选删除列表数据功能示例
Jan 15 Javascript
详解写好JS条件语句的5条守则
Feb 28 Javascript
Vue的生命周期操作示例
Sep 17 Javascript
js实现磁性吸附的示例
Oct 26 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中模拟POST传递数据的两种方法分享
2011/09/16 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
javascript中的new使用
2010/03/20 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
2018/11/06 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
简单介绍Python中的len()函数的使用
2015/04/07 Python
python处理图片之PIL模块简单使用方法
2015/05/11 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
python将音频进行变速的操作方法
2020/04/08 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
木马的传播途径主要有哪些
2016/04/08 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
研究生自荐信
2013/10/09 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
社团招新策划书
2014/02/04 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
综治工作心得体会
2014/09/11 职场文书
平面设计师岗位职责
2014/09/18 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers