日期:2014-05-16  浏览次数:20444 次

js 处理事件

 var addEvent = function( obj, type, fn ) {
            if (obj.addEventListener)
                obj.addEventListener( type, fn, false );
            else if (obj.attachEvent) {
                obj["e"+type+fn] = fn;
                obj.attachEvent( "on"+type, function() {
                    obj["e"+type+fn]();
                } );
            }
        };

obj["e"+type+fn] = fn;这句是什么意思。
obj.attachEvent( "on"+type, function() {
                    obj["e"+type+fn]();//这里直接换成fn也可以执行,为什么要这样写
                } 
javascript

------解决方案--------------------
引用:
引用:帅哥,这个个人理解主要是在addEvent的时候在把一个标志绑定在obj,绑定这个标志的目的是为了在removeEvent的时候好删除绑他。
另一个原因,真如二楼所说:
JavaScript code?123456789101112131415161718192021var addEvent = function (obj, ……

attachEvent
this 指向有问题是ie实现的bug,需要特别处理,而addEventlistener指向是正确的指向,是标准的事件绑定方法,所以不用特别处理。