猿问

关于event 的三个小问题

问题1关于event 的理解:“event : 事件对象 , 当一个事件发生的时候,和当前这个对象发生的这个事件有关的一些详细的信息都会被临时保存到一个指定地方-event对象,供我们在需要的调用。”教程中说说的"详细的信息都会被临时保存到一个指定地方-event对象"那么这个“临时”时间是多久,还是以其他意思?

问题2:

写个简单的小例子:

    


document.onclick=function(ev){

                var a=ev||event

            /*问题2:第一个ev是不是相当于在函数()中已经申明var里一个叫ev的参数?

            然后在标准浏览器情况下把第一个参数默认为的event,就给a赋值了,

            在非标准浏览器的ie(6,7)中就ev就是一个申明的变量还没有赋值,为undefined就执行event这个的意思?*/

        alert(a)

        console.log( typeof a)

        for ( var attr in a ){

        console.log(attr +"="+ a[attr])

    }

    }

 问题3: 

    obj.onclick=function(ev){

    var a=ev||event

    /*问题3:在非标准浏览器的ie(6,7)中event属于全局变量,那么在有多个对象都写过点击事件

    ,并且去执行点击的时候event如何记录“事件有关的一些详细的信息”的?

    (先点击document,后点击obj)是否在点击obj的时候就把“document记录”的内容替换掉了?*/

    a.cancelBubble=true

    }


拉莫斯之舞
浏览 542回答 1
1回答

慕标琳琳

问题1:临时是指在函数执行完就会销毁,垃圾回收器会将其清理。问题2:可以这样理解,但是ie(6,7)是根本没这个参数,所以原本没有声明过程,也没有赋值过程。但是你自己往参数中加了一个参数,所以相当于仅声明,没赋值。问题3:事件执行时是串行的,因为js单线程,浏览器会保存当前事件所需的event对象;(先点击document,后点击obj)这个可以理解成替换,因为全局变量event是唯一的。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答