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 相关文章推荐
xml分页+ajax请求数据源+dom取结果实例代码
Oct 31 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
Mar 28 Javascript
百度地图自定义控件分享
Mar 04 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
js仿腾讯QQ的web登陆界面
Aug 19 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
Mar 13 Javascript
详解vue2父组件传递props异步数据到子组件的问题
Jun 29 Javascript
React + webpack 环境配置的方法步骤
Sep 07 Javascript
Vee-Validate的使用方法详解
Sep 22 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
Feb 11 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
Javascript异步流程控制之串行执行详解
Sep 27 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
咖啡常见的种类
2021/03/03 新手入门
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
2015/03/04 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
React简单介绍
2017/05/24 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
简单的vuex 的使用案例笔记
2018/04/13 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
讲解Python中的递归函数
2015/04/27 Python
python中字符串变二维数组的实例讲解
2018/04/03 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
浅析Python函数式编程
2018/10/06 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
基于python历史天气采集的分析
2019/02/14 Python
python实现简单图片物体标注工具
2019/03/18 Python
python使用thrift教程的方法示例
2019/03/21 Python
微信公众号token验证失败解决方案
2019/07/22 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
电气自动化自荐信
2013/10/10 职场文书
委托证明的格式
2014/01/10 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis