首页 > addEventListener 函数的弊端 ??

addEventListener 函数的弊端 ??

   html :

   b.onclick = function(){  
      var sayHello = function (){
         console.log('你好');
      };
      
      c.removeEventListener('click' , sayHello , false);
      c.addEventListener('click' , sayHello , false);
      
   }

按钮 b , 按钮 c 。 点击一下按钮b 给按钮 c 绑定事件 。

点击按钮b三次 , 再点击一下按钮 c 。 提示了三个 '你好' 

如何做到只提示一个 '你好'

addEventListener本来就是可以绑定多个事件的,你调用了三次就绑定了三个事件。

要removeEventListener必须要传入绑定的时候的同一个函数。你按钮b的事件每次都重新创建了一个sayHello的函数,每次调用的sayHello都是不同的函数。你removeEventListener自然就不起作用了。

不要把你不懂的东西叫做“弊端”,你自己没有理解它的特性就不要妄加批评。


为啥把优势说成弊端。举个不恰当的例子:想象一下,在一个多人合作的项目中,以window.onload作为入口函数,这样就会出现每个人都写一个onload,因为window.onload这种方式会有后面的覆盖前面的,然后就出现了只有最后一个人的代码有效。

再举个例子,同样是多人协作,都想对某个按钮绑定一个事件,难道还得先商议一下,你在那个按钮绑定的函数先别用了,借给我用用


如何只提示一次你好:把 sayHello 扔外面
相关内容:闭包


addEventHandler在功能上并没有什么弊端,它可以说是onclick这类绑定事件方式的升级版。它绑定同个事件,可以有多个处理函数。
不过非要说弊端的话,那就是兼容性了。不过自己封装个兼容函数就可以解决了。

【热门文章】
【热门文章】