javascript内存问题
javascript memory question
假设在我的webapp启动之前,我想首先创建所有dom元素,并将它们存储在一些预加载的数组中。类似于:
for (i = 1...100) { preLoader.push($('<div id="' + i + '" />')); }
然后,根据操作,我将从数组中获取正确的元素,并将其附加到DOM中。
现在我的问题是:如果我以后要做:
$(div#i).remove()
它还会影响我的preLoader数组吗?还是它与DOM中的引用不同?
它还会影响我的预加载器阵列吗
不,不会。对象将从内存中删除,仅当没有访问它的方法时,即没有对它的引用。在$('div#'+i).remove()
之后,您不能从DOM访问它,但您仍然可以通过preLoader[i-1]
访问它。因此,您需要从preLoader
数组中显式删除对象:
preLoader.splice(i-1,1);
DOM中的对象是相同的。如果你想再次使用相同的标签,你应该调用
$(div#i).detach();
来自jquery文档:
除.destrict()保留所有与已移除元素相关联的jQuery数据外,.destrict)方法与.remove()方法相同。当移除的元素稍后要重新插入DOM时,此方法非常有用。
如果使用.remove(),将丢失与要删除的元素相关联的事件和数据。但是,即使使用remove(),您也可以通过再次调用.appendTo()来重用相同的元素。
小提琴手示例:http://jsfiddle.net/sKRCF/1(很抱歉,这是一个简单的方法)。
相关文章:
- HTML5 FileReader API内存问题
- Adobe空气-内存问题
- 递归Javascript对象是否会导致任何问题(内存泄漏)
- 递归承诺调用 - 内存范围变量问题
- 页面刷新后javascript内存泄漏有问题吗?为什么?
- javascript内存问题
- Javascript处理v8引擎的内存泄漏问题
- 来自 NodeJS 脚本的注释是否有可能产生内存问题
- 重复使用时,nsiTimer 会导致溢出或内存问题吗?
- 事件侦听器的有趣内存问题
- 映像预加载和内存问题
- $(myObject) 内存与 myObject 内存 - 问题
- JavaScript + CSS3 动画的内存问题.如何改进
- 全局变量 VS Web 应用中的本地存储和内存问题
- 保留对dom节点的引用:内存问题
- IE浏览器内存问题
- express文件上传内存问题
- GWT内存问题
- 用javascript(服务器端)将大型CSV文件转换为JSON数组:处理内存不足问题
- JavaScript setTimeout内存问题