JavaScript闭包在封装函数时的浅见
2009-11-26 22:37
225 查看
最近才开始系统的研究js,对js的兴趣源于对JQuery的应用。之前只会用js做简单的计算函数,后来由于需要做特效,故接触JQ,看着API,基本的特效都能完成,但相反,如果用js去实现,估计自己很难写得出来,所以下定决心系统的看看js。
最近发现了一个新名词:闭包。(自己落后了,要好好学习才行),baidu、google看了一下原理和实例,也明白了闭包的强大。JQuery也把闭包发扬光大了,网上一些个人开发的框架都是用了闭包了功能。知道了闭包的原理和使用发放,于是自己小小试验了一把,带着疑惑:使用闭包有什么好处?不使用会出现什么后果?写下了以下代码,也希望大家给小弟一些解答
使用闭包:
实例1
var $Darren;
2alert($Darren.Add(6,2)); //结果 8
13alert($Darren.Multi(3,5)); //结果15
不使用闭包代码:
实例2
9alert($Darren2.Add(6,2)); //结果 8
10alert($Darren2.Multi(3,5)); //结果15
我的理解是:
1.使用闭包后可以防止命名冲突,如在实例1中,如果$Darren变量冲突只需改两处地方,而在实例2中,如果$Darren2变量冲突则需该多处(这里是3处)
2.使用闭包后,即使匿名函数执行完毕,但是还可以使用其内部的函数。
还有我有个疑惑就是:
为什么大家都推荐实例1的写法,实例1和实例2哪个更好,为什么?一样能实现的功能。
希望大家指点小弟,这样理解对不对?
还有什么补充的。
谢谢大家~~~
最近发现了一个新名词:闭包。(自己落后了,要好好学习才行),baidu、google看了一下原理和实例,也明白了闭包的强大。JQuery也把闭包发扬光大了,网上一些个人开发的框架都是用了闭包了功能。知道了闭包的原理和使用发放,于是自己小小试验了一把,带着疑惑:使用闭包有什么好处?不使用会出现什么后果?写下了以下代码,也希望大家给小弟一些解答
使用闭包:
实例1
var $Darren;
2alert($Darren.Add(6,2)); //结果 8
13alert($Darren.Multi(3,5)); //结果15
不使用闭包代码:
实例2
9alert($Darren2.Add(6,2)); //结果 8
10alert($Darren2.Multi(3,5)); //结果15
我的理解是:
1.使用闭包后可以防止命名冲突,如在实例1中,如果$Darren变量冲突只需改两处地方,而在实例2中,如果$Darren2变量冲突则需该多处(这里是3处)
2.使用闭包后,即使匿名函数执行完毕,但是还可以使用其内部的函数。
还有我有个疑惑就是:
为什么大家都推荐实例1的写法,实例1和实例2哪个更好,为什么?一样能实现的功能。
希望大家指点小弟,这样理解对不对?
还有什么补充的。
谢谢大家~~~
相关文章推荐
- 用工厂函数封装对象
- 从源字符串截取子串相关函数的封装
- 普通的tab栏的切换与函数封装
- 读取bom封装函数
- 6.对数组进行排序、求最大值和求元素和的函数采用静态成员函数的方式封装成数组算法类模板ArrayAlg,并采用相关数据进行测试。
- javascript闭包,匿名函数和立即调用函数表达式(IIFE)
- 几个封装很好的文件函数
- jquery作者封装函数
- JS-封装函数getValue(key),实现获取请求数据中的value值
- JS_ECMA基本语法中的几种封装的小函数-1
- C++实现修改函数代码HOOK的封装方法
- luci 打印函数封装
- 封装回调函数——为对象方法(Object Method,参数中带this指针的函数) 构造 普通函数(参数中无this指针的函数)形式 的入口
- 利用函数封装完成数组方阵的转置
- 数据库封装函数
- Thinkphp框架下封装文件下载函数
- PHP单文件上传原理及上传函数的封装
- 封装一个函数,此函数会有定时返回的操作
- ASP 正则操作函数封装
- 事件练习:封装兼容性添加、删除事件的函数(实录 四)