delete statement

delete reference

Destroys the object reference specified by the reference parameter, and returns true if the reference is successfully deleted; false otherwise. This operator is useful for freeing memory used by scripts. You can use the delete operator to remove references to objects. After all references to an object are removed, Flash Player takes care of removing the object and freeing the memory used by that object.

Although delete is an operator, it is typically used as a statement, as shown in the following example:

delete x;

The delete operator can fail and return false if the reference parameter does not exist or cannot be deleted. You cannot delete predefined objects and properties, nor can you delete variables that are declared within a function with the var statement. You cannot use the delete operator to remove movie clips.

Availability: ActionScript 1.0; Flash Lite 2.0

Returns

Boolean - A Boolean value.

Parameters

reference:Object - The name of the variable or object to eliminate.

Example

Usage 1: The following example creates an object, uses it, and deletes it after it is no longer needed:

var account:Object = new Object(); 
account.name = "Jon"; 
account.balance = 10000; 
trace(account.name); //output: Jon 
delete account; 
trace(account.name); //output: undefined 

Usage 2: The following example deletes a property of an object:

// create the new object "account" 
var account:Object = new Object(); 
// assign property name to the account 
account.name = "Jon"; 
// delete the property 
delete account.name; 

Usage 3: The following example deletes an object property:

var my_array:Array = new Array(); 
my_array[0] = "abc"; // my_array.length == 1 
my_array[1] = "def"; // my_array.length == 2 
my_array[2] = "ghi"; // my_array.length == 3 
// my_array[2] is deleted, but Array.length is not changed 
delete my_array[2]; 
trace(my_array.length); // output: 3 
trace(my_array); // output: abc,def,undefined

Usage 4: The following example shows the behavior of delete on object references:

var ref1:Object = new Object(); 
ref1.name = "Jody"; 
// copy the reference variable into a new variable 
// and delete ref1 
ref2 = ref1; 
delete ref1; 
trace("ref1.name "+ref1.name); //output: ref1.name undefined 
trace("ref2.name "+ref2.name); //output: ref2.name Jody 

If ref1 had not been copied into ref2, the object would have been deleted when ref1 was deleted because there would be no references to it. If you delete ref2, there are no references to the object; it will be destroyed, and the memory it used becomes available.

See also

var statement