delete ステートメント

delete reference

reference パラメータで指定されたオブジェクト参照を破棄し、参照が正常に削除された場合は true を返します。それ以外の場合は false を返します。この演算子はスクリプトが使用しているメモリを解放するときに役立ちます。delete 演算子を使用してオブジェクトへの参照を削除できます。オブジェクトへの参照がすべて削除されると、オブジェクトの削除と、そのオブジェクトが使用していたメモリの解放が行われます。

delete は演算子ですが、通常は次のようにステートメントとして使用します。

delete x;

reference パラメータが存在しない場合、または削除できない場合には、delete 演算子は処理ができないので false を返します。定義済みオブジェクトとプロパティは削除できません。また、var ステートメントを使って関数内で宣言した変数も削除できません。delete 演算子を使用してムービークリップを削除することはできません。

対応バージョン : ActionScript 1.0、Flash Player 5

戻り値

Boolean - ブール値。

パラメータ

reference:Object - 消去する変数またはオブジェクトの名前。

シンタックス 1: 次の例では、オブジェクトを作成し、使用してから、不要になったそのオブジェクトを削除します。

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

シンタックス 2: 次の例では、オブジェクトのプロパティを削除します。

// 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; 

シンタックス 3: 次の例では、オブジェクトのプロパティを削除します。

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

シンタックス 4: 次の例では、オブジェクト参照を delete で削除します。

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 

ref1ref2 にコピーしていなければ、ref1 を削除したときにオブジェクトへの参照が存在しなくなるので、オブジェクトは削除されることになります。ref2 を削除すると、そのオブジェクトへの参照が存在しなくなるのでオブジェクトが破棄され、オブジェクトによって使用されていたメモリが使用可能になります。

シンタックス 5: 次の例では、delete から返されるブール値をその後のコード実行の条件として使用する方法を示します。アイテムが既に削除済みであれば、そのアイテムに対して再び delete を呼び出すと false が返されます。

var my_array:Array = [ "abc", "def", "ghi" ];
var deleteWasSuccessful:Boolean

deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[1];
deleteWasSuccessful = delete my_array[0];
if(deleteWasSuccessful) delete my_array[2];

trace(my_array) // outputs: undefined,undefined,ghi

関連項目

var ステートメント


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00001316.html