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 相关文章推荐
用JQuery 实现的自定义对话框
Mar 24 Javascript
一个js实现的所谓的滑动门
May 23 Javascript
十分钟打造AutoComplete自动完成效果代码
Dec 26 Javascript
JS延迟加载(setTimeout) JS最后加载
Jul 15 Javascript
深入探讨前端框架react
Dec 09 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
详解jQuery lazyload 懒加载
Dec 19 Javascript
原生JS下拉加载插件分享
Dec 26 Javascript
从零开始做一个pagination分页组件
Mar 15 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
Nov 08 jQuery
详解vue的数据劫持以及操作数组的坑
Apr 18 Javascript
JavaScript中遍历的十种方法总结
Dec 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
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
vue axios 二次封装的示例代码
2017/12/08 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
python实现Flappy Bird源码
2018/12/24 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
python实现银行实战系统
2020/02/26 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
《记承天寺夜游》教学反思
2014/02/16 职场文书
无私奉献演讲稿
2014/09/04 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
建议书范文
2015/02/05 职场文书
2015年预算员工作总结
2015/05/14 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
Go Plugins插件的实现方式
2021/08/07 Golang
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL
Nginx报404错误的详细解决方法
2022/07/23 Servers