javascript函数式编程--闭包3 闭包存储器与事件中应用闭包(封装事件)

1.闭包的常见用法 就是  为执行的函数提供参数,例如 为事件传递动作,为定时器传递行为,都是web非常常见的应用

为定时器传递行为

function f(a,b){

    return  function(){

       a(b);

       }

}

var c=f(alert,"hello,World")

var d=setTimeout(c,1000);//把闭包作为参数传递

window.οnlοad=c;//作为值 传递

 

2.通过闭包可以作为缓冲器的数组与依赖他的函数关联起来,实施优雅的打包,同时也能够维持在全局命名空间外制定的缓冲数组的属性名,免除了名称冲突和意外交互的危险

//闭包与数组关联,修改数组缓存器的指定元素

var f=function(){

   var a=[1,2,3,4,5,6,7,8,9,0]

  return function(a1,a2,a3,a4,a5){//返回的闭包函数

    a[0]=a1;

    a[1]=a2;

    a[2]=a3;

    a[3]=a4;

    a[4]=a5;

   return  a.join("-"); //返回的字符串

   }

}();  //

var a=f(11,12,13,14,15);  //动态更新的值 alert(a) //11-12-13-14-15-6-7-8-9-0

var b=f("a","b","c","d","e"); //动态更新的值 alert(b)//a-b-c-d-e-6-7-8-9-0

3.希望为页面中的特定的元素或标签绑定几个事情,使其能够在鼠标经过、离开和单击以后呈现不同的背景颜色

<script>

  function f(o,m){//1、实例对象o与方法m关联处理器

           return   function(e){//返回闭包函数,将作为一个DOM元素的处理器

                      e=e||window.event;

                     return o[m](e,this);   //返回闭包函数,利用传递的必要参数封装事件处理函数

          }

     }

function g(id){//2、封装事件处理函数,以实现在页面初始化事件触发

   return function(){//返回事件处理函数

     var e=document.getElementByTagName(id);

   if(e){

      for(var i in e){

      e[i].οnclick=f(g,"click");//调用关联处理器,把对象与方法捆绑到事件属性中

      e[i].οnclick=f(g,"over");

      e[i].οnclick=f(g,"out");

     }

     }

}

}

//3、为事件处理封装函数定义额外的事件处理方法

g.click=function(event,element){

  element.style.backgroundColor="red"

}

g.over=function(event,element){

  element.style.backgroundColor="blue"

}

g.out=function(event,element){

  element.style.backgroundColor="transparent";

}

window.οnlοad=g("p");//页面初始化事件中绑定事件处理函数

</script>

<p>p1</p>

<p>p2</p>

<p>p3</p>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值