トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     クラス内の変数について
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
Fumio
Åê¹ÆNo.3530
投稿日時: 2004-2-5 11:05
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
Re: クラス内の変数について
関数の引数およびローカル変数は、その関数ブロック内でのみ有効です。関数の処理が終了するとともに、メモリから破棄されます。したがって、他の関数や、関数の外側(クラスのプロパティ宣言やタイムライン変数の宣言)で同一の識別子(名前)を使用しても、コンフリクトは発生しません。
引用:
takiguchiさんは書きました:
2.異なるメソッドの引数で同じ名前を使ってもコンフリクトは起こらないのでしょうか?
3.メソッド内で宣言された変数と同じ名前の変数を他のメソッドで宣言しても
コンフリクトは起こらないのでしょうか?
4.クラスのプロパティと同じ名前の変数をメソッドで宣言しても
コンフリクトは起こらないのでしょうか?

ActionScriptが関数を処理するとき、識別子を「ローカル変数」>「タイムライン変数」または「インスタンスプロパティ」>「グローバル変数」の順に探していきます(これを「スコープチェーン」と呼びます)。そして、合致する値が見つかれば、その先は関知しません。

コンフリクトが避けられる一方で、スコープチェーンのその先の変数の検索が遮断されます。この性質を意図的に使うことを、「隠ぺい」といいます。たとえば、インスタンスのデフォルト値を設定する手法として利用することができます([クラスの作成と使用][訳者註*1]参照。ただし、この動作はJavaやJScript.NETなどの他のオブジェクト指向言語とは異なります)。
引用:
ただし、クラスのプロパティと同じ名前の変数がメソッドで宣言されている場合は、
メソッド内で宣言されている変数が優先される感じです。
ということは、クラスのプロパティと同じ名前の変数をメソッドで宣言すると、
そのメソッドからアクセス不可能なプロパティが存在してしまうことになるのでしょうか?

スコープチェーンの先の変数は、ターゲットを明示的に指定すれば、参照可能です。また、フレームアクションのサンプルを示します。
// フレームアクション
_global.myProperty = "global";
trace(myProperty);  // 出力: global
myProperty = "timeline";
function xTest(_str:String):Void {
	trace(myProperty);  // 出力: timeline
	var myProperty = "local";
	trace(myProperty);  // 出力: local
	trace(this.myProperty);  // 出力: timeline
	trace(_global.myProperty);  // 出力: global
}
xTest();
trace(myProperty);  // 出力: timeline
trace(this.myProperty);  // 出力: timeline
trace(_global.myProperty);  // 出力: global


----------------
 

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   クラス内の変数について takiguchi 2004-2-5 7:02
     Re: クラス内の変数について Fumio 2004-2-5 10:42
   » Re: クラス内の変数について Fumio 2004-2-5 11:05
       Re: クラス内の変数について takiguchi 2004-2-5 20:09
         Re: クラス内の変数について Fumio 2004-2-6 9:59
           Re: クラス内の変数について takiguchi 2004-2-6 11:00
         Re: クラス内の変数について Fumio 2004-2-6 12:45
           Re: クラス内の変数について takiguchi 2004-2-6 14:53
             Re: クラス内の変数について youich 2004-2-8 13:43
             Re: クラス内の変数について youich 2004-2-8 15:54
               Re: クラス内の変数について takiguchi 2004-2-8 21:45
                 Re: クラス内の変数について youich 2004-2-9 3:15
                   Re: クラス内の変数について takiguchi 2004-2-11 11:51
                     Re: クラス内の変数について Fumio 2004-2-11 13:39
                       Re: クラス内の変数について takiguchi 2004-2-11 14:53
                     Re: クラス内の変数について youich 2004-2-11 22:27
                       Re: クラス内の変数について takiguchi 2004-2-12 2:14
                         Re: クラス内の変数について youich 2004-2-12 3:00
                         Re: クラス内の変数について Fumio 2004-2-12 22:33
                           Re: クラス内の変数について takiguchi 2004-2-13 11:41
             Re: クラス内の変数について Fumio 2004-2-8 22:09
     Re: クラス内の変数について Fumio 2004-2-5 11:16
       Re: クラス内の変数について tomohiro 2004-2-5 12:05
         Re: クラス内の変数について Fumio 2004-2-5 18:54
     Re: クラス内の変数について youich 2004-2-8 14:06
     Re: クラス内の変数について takiguchi 2004-2-9 21:32
       Re: クラス内の変数について youich 2004-2-9 22:47
         Re: クラス内の変数について takiguchi 2004-2-10 0:17
           Re: クラス内の変数について youich 2004-2-10 2:34

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops