I’m quite new to Javascript and I was just reading following article.
you can define an ajax connection
once, and reuse it multiple times, and
start and stop it later on. Here’s an
example:
var myAjaxRequest = A.io.request('test.html', {
method: 'POST',
data: {
key1: 'value1'
}
});
Now later on, if I want to make that
same ajax call again, all I have to do
is call:
myAjaxRequest.start();
What if I had a very frequently used auction page and I wanted to use the myAjaxRequest connection for all actions a user does from his browser. What are the rules for lifetime of the myAjaxRequest instance ? I suppose it is destroyed on page refresh. But is it anything else that destroys it ? Let say that the object is created within YUI sandbox, but it doesn’t matter.
Its a shame this was answered in comments because nobody gets closure (sorry, terrible pun). @Šime Vidas and @WaiLam deserve the credit but I will at least attempt to craft an answer:
While you have a reference to the object (though the variable
myAjaxRequest) it will remain in memory until the document is unloaded. If you assign null to your variable (myAjaxRequest = null), and there are no other references to the object, then the garbage collector will reclaim the memory used to store it.A reference can exist even if
myAjaxRequestis a local variable within a function. The function can return a reference to the local variable, for example as a object property e.g:or it can return a reference through a closure (excellent explanation here), e.g:
As long as you have a reference to your object it will not be garbage collected. You can safely call the
startmethod until the page is unloaded.