打破封闭

I'm working on a small lib/script that will search the document body for <div src="..."></div>, retrieve content from the specified src(using XHR) and insert the content into the div. Before I go any further, let me give you an exert from the coding:

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"));

After each XHR request takes place and the content is processed, due to the closure, the xhr object isn't destroyed, causing the created Include object not to be destoryed. Which in turn, is a memory leak. It's not such a big deal for either a: Few Include requests, b: Little content from such requests but as the includes increase and the response content increases you can steadily see the memory usage increases. How would I go about breaking the closure(or using a viable work around that doesn't depend on using a global variable,obj,etc) to fix this leak?

(Please do not suggest the use of a library, even though what I'm working on is for browser js, my question applies more to how javascript itself works)

You could try this:

this.xhr.onload = (function(incObj){
    return function(){
        incObj.onload.call(incObj,this);
        incObj.xhr.onload = null;
    }
})(this);

If you have any other event handlers going on, you should dispose them as well when you don't need the object anymore.