这是我的代码:
// array of image data
var images = [
{
url: 'image.jpg'
}
];
// function that loads image
var loadImage = function(imageObject) {
imageObject.img = $('<img src="'+imageObject.url+'"/>').error(function() {
// error event handler, that might not always fire
imageObject.img.remove();
imageObject.notLoaded = true;
});
};
loadImage(images[0]);
我的问题是如何清理图像阵列?如果我分配
images = null;
,这会为所有图像清理内存吗?我应该取消绑定'错误'处理程序吗?
谢谢!
答案 0 :(得分:2)
与C / C ++(和其他)不同,JavaScript负责内存管理和垃圾收集。当然,删除不必要的数据会释放浏览器/服务器使用的一些资源,并可能略微提高整体性能,但这不是义务,如果你忘了它就不会有内存泄漏。
要清理阵列,您可以设置images.length = 0
。 images
将是一个空数组[]
。
答案 1 :(得分:0)
我可能已经太迟了,但我自己也偶然发现了这个问题。 @oleq的回复是正确的,但只有这是Vanilla JS。
jQuery 1.x将所有事件保存在jQuery.cache
对象中,因此您需要取消绑定它,将其从那里删除。