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框架的AJAX实例代码
Nov 03 Javascript
Jquery Ajax的Get方式时需要注意URL地方
Apr 07 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 Javascript
js实现的map方法示例代码
Jan 13 Javascript
jQuery 计算iframe 窗口大小的方法
May 13 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
基于javascript html5实现多文件上传
Mar 03 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
Mar 07 Javascript
webpack常用配置总览(小结)
Nov 18 Javascript
javascript实现左右缓动动画函数
Nov 25 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
jquery搜索框效果实现方法
2015/01/16 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
总结Python编程中函数的使用要点
2016/03/20 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
用pycharm开发django项目示例代码
2018/10/24 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
python 实现让字典的value 成为列表
2019/12/16 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
营业经理岗位职责
2013/11/10 职场文书
学校政风行风整改方案
2014/10/25 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
建房合同协议书
2016/03/21 职场文书
Python利用机器学习算法实现垃圾邮件的识别
2021/06/28 Python
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript