我的问题是关于访问子对象父对象的最佳实践。因此,假设一个类实例化了另一个类,该类实例现在被一个对象引用。从该子对象中,引用回父对象的最佳方法是什么?目前我知道我经常使用的几种方法,但我不确定 A)是否有更好的方法或 B)其中哪一种是更好的做法
第一种方法是使用 getDefinitionByName,它不会实例化该类,但允许访问其中公开声明的任何内容。
_class:Class = getDefinitionByName("com.site.Class") as Class;
然后根据其父到子层次结构引用该变量。
例如,如果孩子试图引用一个比自己高两级的类:
_class(parent.parent).function();
这似乎工作正常,但您需要知道孩子所处的级别与您尝试访问的父级的级别相比。
我还可以得到以下语句来追踪 [object ClassName] 到 Flash 的输出中。
trace(Class);
我不是 100% 地执行那条线,我没有说服它作为引用我所在的当前对象之外的对象的一种方式。
我见过的另一种方法是简单地将 this 的引用传递给您正在创建的类对象,然后用构造函数参数捕获它
var class:Class = new Class(this);
然后在Class文件中
public function Class(objectRef:Object) {
_parentRef = objectRef;
}
但是,该引用还要求您使用子层次结构向后退到父层次结构。
我也可以导入该类,然后使用直接文件路径来引用该类内部的方法,无论它是否是父类。
import com.site.Class;
com.site.Class.method();
当然,父子关系是无关紧要的,因为我直接通过导入的类访问方法或属性。
我只是觉得我在这里错过了一些非常明显的东西。我基本上是在寻找确认这些是否是引用父母的正确方法,如果是的话,哪个是最理想的,还是我忽略了其他东西?