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隐藏控件的方法
Sep 21 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
Dec 28 Javascript
JavaScript实现模仿桌面窗口的方法
Jul 18 Javascript
Bootstrap每天必学之进度条
Nov 30 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
Jan 05 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
May 03 Javascript
DOM事件探秘篇
Feb 15 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
Mar 06 Javascript
JS实现自定义弹窗功能
Aug 08 Javascript
vue中destroyed方法的使用说明
Jul 21 Javascript
封装Vue Element的table表格组件的示例详解
Aug 19 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 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与ASP
2006/10/09 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
PHP实现获取url地址中顶级域名的方法示例
2019/06/05 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
Vue实现购物车功能
2017/04/27 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
基于Python List的赋值方法
2018/06/23 Python
一百行python代码将图片转成字符画
2021/02/19 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
Laura Mercier官网:彩妆大师罗拉玛斯亚的化妆品牌
2018/01/04 全球购物
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
华为的Java面试题
2014/03/07 面试题
机械制造专业大学生自我鉴定
2014/09/19 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
公司员工培训管理制度
2015/08/04 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
详解NodeJS模块化
2021/06/15 NodeJs
Nginx HTTP跳转至HTTPS
2022/05/15 Servers