我理解addEventListener
和onclick
属性之间的区别,并知道如何使用它们。我想知道是否有一个缺点是始终使用EventListener
而不是使用onclick
属性。从动态生成javascript中的HTML时,EventListener
似乎比仅使用onclick
更强大。
是否存在内存/ CPU缺陷或仅使用EventListeners是否安全?
答案 0 :(得分:3)
这可能不是你要进入的方向,但是有一些情况你无法删除事件监听器。
事件处理程序完全公开,任何人都可以修改(在某种程度上):
// You do this
myLink.onclick = function () {
alert('hello, world');
};
// Another developer who hates you because
// he thinks that you're hitting on his girlfriend
// but you're not, you're just friends, but
// he's jealous so he doesn't understand
// does this
myLink.onclick = function () {
alert('muahahahaha');
};
// Someone else could even get rid of
// the handler entirely:
myLink.onclick = null;
但是没有公开可访问的事件监听器列表。删除事件侦听器的唯一方法是,您仍然可以访问原始函数:
myLink.addEventListener('click', function () {
alert('hello, world');
}, false);
现在无法移除该事件侦听器。你给了它一个匿名函数,所以如果你愿意,你甚至无法删除它。