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下利用arguments实现string.format函数
Aug 24 Javascript
用js代码改变单选框选中状态的简单实例
Dec 18 Javascript
js实现遍历含有input的table实例
Dec 07 Javascript
JavaScript中push(),join() 函数 实例详解
Sep 06 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
vue将单页面改造成多页面应用的方法
Nov 25 Javascript
基于JavaScript实现每日签到打卡轨迹功能
Nov 29 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
Feb 19 Javascript
Javascript读写cookie的实例源码
Mar 16 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
javascript实现多边形碰撞检测
Oct 24 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
ZF等常用php框架中存在的问题
2008/01/10 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
php的4种常见运行方式
2015/03/20 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
BootStrap扔进Django里的方法详解
2016/05/13 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
js制作提示框插件
2020/12/24 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
python 实现目录复制的三种小结
2019/12/04 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
智能旅行箱:Horizn Studios
2018/04/30 全球购物
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
Order by的几种用法
2013/06/16 面试题
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL