在函数中经常会遇到function demo(ev){}这样的ev参数,这个参数在FF里是可以随便起名的,但是它代表了event事件对象,就是在函数内部可以用ev.某个属性这样来调用这个event事件对象JS是怎么知道这个ev(或者abc也可以)到底是我传递的某个参数还是event事件对象呢?这个地方一直没明白,也不知道该怎么百度再一个就是,这种写法是不是只支持像onload,onclick这样的事件函数的传参?而不支持一般的用户自定义的函数传参?

解决方案 »

  1.   

    事件处理函数才需要传入 event (非IE浏览器)
      

  2.   

    浏览器的事件对象是不能被修改的,所以jQuery的做法就是自己复制一个事件对象,然后加入他自己的东西,基于这个原理,LZ只要给event.test赋值,然后读这个值,如果读不到,那么这个就是浏览器给的事件对象。
      

  3.   

    可以自定义的函数传参,如需要自己把event传进去
      <input type="button" onclick="fn(event,1,2)" />
      

  4.   

    根据对象属性判断
    一个事件对象,一般具有成员:
    target:表示触发事件的dom
    clientX:
    clientY:鼠标位置
    ...自己百度
    根据两三个成员就可以基本确定是否event对象了
    如 if(ev.target && ev.clientX && ev.clientY) 
       {
            alert("是event对象");
       }
      

  5.   

    function(evt) {
        if(evt.preventDefault) alert('this is event');
    }