2011-08-04 6 views
3

フレックスでは、変数が存在するかどうかをチェックする方法は?私は変数がフレックスに存在するかどうかをチェックする方法

if (this['some_variable'] != undefined) { 
    //do something 
} 

存在しませんsome_variableプロパティを言って、実行時エラーがあります使用して試してみました。私はundefinedの代わりにnullとチェックしましたが、それと同じエラーです。

助けてください。

私はthis.hasOwnProperty('variable_name')を使用していた回答に基づいて、[EDIT]

。そのの場合は、の場合、variable_namepublicですが、falseの場合は返されます。プライベート変数をチェックするには?

+0

を使用することができますが、ブレークポイントを設定し、変数ビューをチェック - あなたはFlash Builderを使用していると仮定します。 – TheDarkIn1978

+1

hasOwnProperty()は公開されたフィールドに対してのみ機能します。プライベートメンバーを明らかにするために、内部調査を行うためにAS3で行うことは何もありません。これが絶対必要な場合は、すべてが公開されているAS2に切り替えます。 –

答えて

6

あなたは

if (this. hasOwnProperty("some_variable")) { 
    //access the variable inside 
} 
2

if (this.hasOwnProperty('some_variable')) DO_IT_!()

説明:

インスタンスプロパティsome_variableの価値を評価しようとしthis['some_variable']。そのようなプロパティがない場合、このエラーが発生します。

特定のオブジェクトのプロパティが存在するかどうかをテストするには、hasOwnPropertyを使用するか、条件をtry/catchブロックにラップするか、if ('some_variable' in this)を使用します。

通常は、クラスファイル内のオブジェクトのプロパティを作成します。

public class MyClass { 
    public var myProperty : String = "ich bin hier"; 
} 

その後、あなたはクラス内でそのプロパティを参照してください:配列構文を使用して

trace (myProperty); 
trace (this.myProperty); 

[]も可能であるが、意志プロパティが定義されていない場合はエラーをスローします。

trace (this['myProperty']); 

そして最後に!クラスを動的に宣言した場合、プロパティが存在しない場合でも配列の構文を使用することがあります。

public dynamic class MyClass { 
    public function MyClass() { 
     trace (this["never_declared_property"]); 
    } 
} 
8

そのための2つの方法があります。

if ("some_variable" in this) { 
    //do something 
} 

それはin operatorを使用しています。

そして:

if (this.hasOwnProperty("some_variable")) { 
    //do something 
} 

documentation about hasOwnProperty()を参照してください。

非公開/保護されたプロパティに関する情報を取得すると、Flash Playerの現在の状態でこの情報を取得できない場合があります。唯一可能な方法は、ある種のランタイムバイトコード操作です。しかし、私が知っている限り、まだ誰もそれを実装していません。

私は私的/保護されたプロパティに関する情報を得ることに関して質問しています。それはあなたがそれを必要とする目的のためにありますか?これらのプロパティ/メソッドの性質は、それらを呼び出すことができないということです。あなたがその存在を知っていても。

+0

私は自分の質問を更新しました。あなたは助けてください。 – Anji

+0

@Anji私は私の答えを更新しました。 – Constantiner

+0

静的フィールドで 'if(" some_variable "in ClassName)'のみが動作します。 –

関連する問題