js学习笔记——connect函数

connect 函数

 

    dojo.event.connect(handlerNode,"eventName",obj,handler)

    功能:

            为handlerNode节点绑定事件监听函数,当handlerNode对象的

             eventName被触发时,obj的handler函数被触发。

             handlerNode可以时DOM对象,也可以时普通定义的js对象。

             如果obj跟handlerNode是一个对象时,可以省略。

 

   普通的DOM对象:

        handlerNode

                     

var handlerNode=document.getElementById("handler");

        handler:handOnclick

           

           before:事件监听函数将在被监听函数之前触发。

         around:around监听函数会包含一个参数,是method-invocation对象,这个对象至少包含一个args属性,该属性代表目标方法的参数。该对象还包含一个方法:proceed(),用于调用目标函数,并返回结果。

       

<script type="text/javascript">
      var abc={//定义abc变量
       foo:function(var1,var2){//定义abc的foo函数
       dojo.hostenv.println("var1的参数值为"+var1);
       dojo.hostenv.println("var2的参数值为"+var2);
       return  "foo方法的返回值"
       }
      }
      function bar(invocation){
       if(invocation.args[0]!="undifined"){
         invocation.args[0]="wawa_new----AOP修改后的第一个参数";
         }
       if(invocation.args[1]!="undifined"){
         invocation.args[1]="nono---AOP修改后的第二个参数";
         }
        var result=invocation.proceed();//修改参数后,调用目标函数foo
        result="AOP修改了目标的返回值";//修改返回值
        return result;
        
      }
      dojo.event.connect("around",abc,"foo","bar");
      dojo.hostenv.println(abc.foo("wawa","nono"));
  </script>

     dojo.event.connect("around",abc,"foo","bar");

  

     利用around事件,bar函数可以改变foo函数的参数值和返回值。

     注:after和before事件通过arguments[]也可以访问到被监听方法的参数,但是不能修改.

         

        

        

 

 

 

 function handOnclick(evt){
                
                alert("单击我触发的事件"+evt);
           }
   

        eventName:onclick

Connect函数:

 

dojo.event.connect(handlerNode,"onclick","handOnclick");

 

自定义的对象:

  

 var abc={
       foo:function(){//定义foo函数
       dojo.hostenv.println("abc的foo事件");
       },
       bar:function(){//定义bar函数
       dojo.hostenv.println("abc的bar事件");
       }
       }

       dojo.event.connect(abc,"foo",abc,"bar");//abc的foo函数被触发时,abc对象的bar函数也执行
      abc.foo();

 

 

    connect的AOP实现:

 

     connect函数还支持一个参数,可以是after,before,arround 默认after。   

     

     完整的connect格式:

 

           dojo.event.connect (time,srcobj,"srcFunction",listenerObj,"listennerFunction");

 

你可能感兴趣的:(JavaScript,AOP,dojo)