首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本机UIEvent()在事件结束后未清除

本机UIEvent()在事件结束后未清除
EN

Stack Overflow用户
提问于 2016-01-18 10:54:11
回答 1查看 30关注 0票数 0

我有一个点击监听器:

document.getElementById("addData").addEventListener("click", addData);

如果在实际单击之前,我获取一个内存快照,并在对象中查找UIEvent,则它不存在。但是单击后,如果我拍摄另一张快照并遍历分配的对象,我可以看到UIEvent和MouseEvent (本地js接口)。

问题是,为什么那些物体被保存在记忆中?如果我在实际活动之前不需要他们,为什么在活动结束后我会需要他们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-18 10:58:04

当您单击某个位置时,浏览器内部调用new MouseEvent("click");,这与编程在页面上创建“虚拟单击”的方式相同。这段代码将执行相同的操作,就像单击页面时一样,但它是显式完成的:

代码语言:javascript
复制
var evt=new MouseEvent('click');
document.dispatchEvent(evt);

MouseEvent继承自UIEvent,因此两个构造函数都被调用:

代码语言:javascript
复制
document.addEventListener("click",function(evt){
 console.log("evt instanceof MouseEvent :",evt instanceof MouseEvent);
 console.log("evt instanceof UIEvent :",evt instanceof UIEvent);
});

如果在一段时间后没有引用,该事件将被垃圾收集。您可以在Mozilla开发人员网络上的javascript中获得更多有关内存管理和垃圾收集的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34852947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档