jQuery.data( )方法与内存泄漏
在jQuery的官方文档中,提示用户这是一个低级的方法,应该用.data()方法来代替。$.data( element, key, value )可以对DOM元素附加任何类型的数据,但应避免循环引用而导致的内存泄漏问题,原文如下:
但对于该方法,存在的问题也不仅于此。在JQUERY FORUM中 ,对该问题作了深入的讨论,robert.katic 提出了一条解决方案。$.data()方法应用到宿主对象上,运行会得到优化,但在本地对像上使用该方法,结果未必尽如人意。一个元素在正常情况下可以使用.remove()方法将其删除,并清除各自的数据。但对于本地对象而言,这是不能彻底删除的,这些相关的数据一直持续到窗口对象关闭。同样,这些问题也存在于event 对象中,因为事件处理器(handlers)也是用该方法来存储的。 那么,要解决该问题最简单的方法是将数据存储到本地对象新增的一个属性之中。即: // ... 但是,一旦涉及到继承问题,该方法就无能为力。试看: var parent = {}; 开始时,存储数据的对象不存在,因此创建一个对象来存储新的值,如图 现在,我们尝试去修改对象childA同样的数据。
(编辑:文山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 大数据厂商Palantir融资5亿美元 将于数周内提交IPO申请
- 全新一代骁龙8移动平台强势来临,支持10Gbps的5G下载速度!
- 联想云张跃华:用超融合和企业网盘两个杀手锏,突破企业云市
- Palo Alto Networks发布季度财报 宣布2.65亿美元收购Crypsi
- 思杰(Citrix)携手微软共同推进未来办公模式(Future of W
- Σco时间 | 流域智慧管理综合调度探索
- Nature评论 机器学习的物理启示录 隔壁的另一条时机之道
- 面向专业设计师的NVIDIA Ampere GPU为台式机、数据中心和云
- 戴口罩的日子里,iPhone还可以完成人脸识别吗?
- jQuery1.3.2源码学习7:setArray,each 函数