我正在开发一个小型库/脚本,它将搜索文档正文<div src="..."></div>
,从指定的 src(使用 XHR)检索内容并将内容插入到 div 中。在我继续之前,让我从编码中给你一个尝试:
function Include(ele) {
this.ele = ele;
this.xhr = new XHR();
this.xhr.onload = (function(incObj){
return function(){
incObj.onload.call(incObj,this);
}
})(this);
this.xhr.open("GET",ele.getAttribute("src"),false);
this.xhr.send();
}
Include.prototype.XHR = function(){/* code to find a viable xhr object*/}
Include.prototype.onload = function(){/* stuff */}
var inc = new Include(document.getElementById("someId"));
在每个 XHR 请求发生并处理内容之后,由于关闭,xhr 对象没有被销毁,导致创建的 Include 对象没有被销毁。这反过来又是内存泄漏。对于 a:很少包含请求,b:此类请求的内容很少,但随着包含的增加和响应内容的增加,您可以稳定地看到内存使用量增加。我将如何打破闭包(或使用不依赖于使用全局变量、obj 等的可行解决方法)来修复此泄漏?
(请不要建议使用库,即使我正在研究的是浏览器 js,我的问题更多地适用于 javascript 本身的工作原理)