The new
operator allocates memory for objects. How is this memory deallocated?
delete
operator to match the new
operator. The reason for this is simple: It's not necessary!
In JavaScript, memory for objects is automatically reclaimed whenever there is no longer need for the object. The JavaScript interpreter tracks references to objects and deletes them when variables no longer refer to them.
For example, consider the following JavaScript code:
The first statement allocates memory for and = new Array (50); d = null;
Array
object large enough to hold 50 elements, and then records the fact that the new object is referenced by a variable named d.
The next statement, however, changes d so that instead of referring to the Array
object, it instead contains the special value null
. Since there is no longer any way to access the Array
object, the JavaScript interpreter destroys it by reclaiming the memory that was allocated to it.
Reclaiming memory allocated for objects which can no longer be accessed is called garbage collection. Allocated objects which are no longer accessible by variables are called orphan objects.
This next example shows how to modify the above code to prevent the destruction of the Array
object:
Since thed = new Array (50);
make e refer to the same object as d
e = d; //disassociate d from the
d = null; //Array
object
Array
object is referenced by e at the moment it is abandoned by d, the Array
object remains intact.
In conclusion, there is no need to worry about destroying objects in JavaScript. Garbage collection is performed automatically by the interpreter whenever objects are no longer useful or documents are unloaded. If you want to explicitly destroy an object, you can do so by abandoning it -- that is, by making sure there are no variables that refer to it. (Setting the variables to null
works pretty well for this.)
Charlton Rose
11 Jan. 1997