私の質問は、子オブジェクトの親にアクセスするためのベスト プラクティスに関するものです。クラスが別のクラスをインスタンス化するとしましょう。そのクラス インスタンスはオブジェクトで参照されます。その子オブジェクトから、親オブジェクトを参照する最良の方法は何ですか? 現在、私が頻繁に使用するいくつかの方法を知っていますが、A) それを行うためのより良い方法があるのか、それとも B) どちらがより良い方法なのかはわかりません
最初の方法は、getDefinitionByName を使用することです。これは、そのクラスをインスタンス化せず、公に宣言されたクラス内のすべてのものへのアクセスを許可します。
_class:Class = getDefinitionByName("com.site.Class") as Class;
次に、親から子への階層に基づいてその変数を参照します。
例: 子がそれ自体から 2 レベル上のクラスを参照しようとしている場合:
_class(parent.parent).function();
これは問題ないように見えますが、アクセスしようとしている親のレベルと比較して、子供がどのレベルにあるかを知る必要があります。
次のステートメントを取得して、[object ClassName] を Flash の出力にトレースすることもできます。
trace(Class);
私はその行の実装について 100% ではありません。私がいる現在のオブジェクトの外部にあるオブジェクトを参照する方法としてそれを主張していません。
私が使用した別の方法は、 this への参照を作成中のクラスオブジェクトに単純に渡し、コンストラクター引数でキャッチすることです
var class:Class = new Class(this);
そしてクラスファイルで
public function Class(objectRef:Object) {
_parentRef = objectRef;
}
ただし、その参照では、子から親への階層を使用してステップアップする必要もあります。
また、そのクラスをインポートし、直接ファイルパスを使用して、親であるかどうかに関係なく、そのクラス内のメソッドを参照することもできます。
import com.site.Class;
com.site.Class.method();
もちろん、インポートされたクラスを介してメソッドまたはプロパティに直接アクセスしているため、親から子への関係は無関係です。
ここで本当に明白な何かが欠けているように感じます。私は基本的に、これらが親を参照する正しい方法であるかどうかの確認を探しています。もしそうなら、どれが最も理想的ですか、それとも他の何かを見落としていますか?