JavaScript DOM在对象上注册事件监听器__John Resig的addEvent()方法解析


一,  obj['e' + type + fn] = fn的作用

      因为在IE中, 事件侦听器即事件处理函数内部的this默认指向window对象. W3C中指向所绑定的对象本身.

    因此为了使事件处理函数内部的this指向所绑定的对象,可以将函数赋值为该对象的某个属性成为他的方法,那么this指针就指向了所绑定的对象本身.


二, 为什么不直接

     obj.attachEvent('on' + type, obj['e' + type + fn]);

       因为IE默认的事件对象为window.event,

    而W3C则是作为参数传入如function(W3CEvent) { //其中W3CEvent为事件对象 }.

    为了使得事件处理函数统一为function(theSameEvent) {} 同一传入事件对象. 那么IE则要把window.event传入

    即可以用函数包装. 也就有了function(){  obj['e' + type + fn](window.event); }


三, 为什么不直接

     obj.attachEvent('on' + type, function(){

            obj['e' + type + fn](window.event); 

     });

     因为方便移除事件的考虑, obj[type + fn]可以获得对事件处理函数的引用.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值