闭包的应用

Js的闭包是一个很重要的概念,我的理解他有点像设计模式,他是一种思想,并不是js本身的机制。

下面介绍一下今天利用这个概念实现的需求。

需求:我们需要对一个dom元素绑定一个事件,并传入参数。

我们来看下正常的写法

$('#xxxx').bind('click',function(i,j){alert(i+j);});

这样做是可以实现功能的,但问题是如果函数体的内容太多,或者绑定的控件有很多,代码不太美观而且不便于管理。

这时候我们想到另外一种写法:

$('#xxxx').bind('click',test(i,j));

function test(i,j){

alert(i+j);

}

这样的写法看上去没毛病,其实是不可行的。

那难道我们只能用第一种方法了吗?

答案是否定的,下面用闭包来实现。

首先闭包的思想是让内部函数的生命周期比外部函数长,那就意味着内部的函数得是申明,且需要被外部变量接收。所以,我们利用这一点,可以实现上面的需求,代码如下:

<div class='aaa' >点我</div>

<div class='bbb' >再点我</div>

<script type="text/javascript">
var action = new Array(2);
function aaa(i,j,g,b,k){
action[0] = function bbb(){
console.log(i+j);
}
action[1] = function ccc(){
console.log(b*(k.attr('val')));
}
}

$(function(){
aaa(4,6,5,7,$('.bbb'));
$('.aaa').bind('click',action[0]);
$('.bbb').bind('click',action[1]);
})

</script>

这就是闭包的一个简单应用。

猜你喜欢

转载自www.cnblogs.com/mike12138/p/10256242.html