Мой вопрос касается наилучшей практики доступа к родительскому объекту дочернего объекта. Допустим, класс создает экземпляр другого класса, на этот экземпляр класса теперь ссылается объект. Из этого дочернего объекта, каков наилучший способ вернуться к родительскому объекту? В настоящее время я знаю пару способов, которыми я часто пользуюсь, но я не уверен, есть ли А) лучший способ сделать это или Б), какой из них лучше использовать
Первый метод заключается в использовании getDefinitionByName, который не будет создавать экземпляр этого класса, но разрешать доступ ко всему внутри него, который был публично объявлен.
_class:Class = getDefinitionByName("com.site.Class") as Class;
А затем ссылаться на эту переменную, основываясь на ее родительской и дочерней иерархии.
Пример, если ребенок пытается сослаться на класс, который находится на два уровня выше самого себя:
_class(parent.parent).function();
Кажется, это работает нормально, но вы должны знать уровень, на котором находится ребенок, по сравнению с уровнем родителя, к которому вы пытаетесь получить доступ.
Я также могу получить следующий оператор для отслеживания [object ClassName] в выводе Flash.
trace(Class);
Я не на 100% использую эту строку, я не убедил ее как способ ссылаться на объект за пределами текущего объекта, в котором я нахожусь.
Другой метод, который я видел, - это просто передать ссылку на него в объект класса, который вы создаете, и просто перехватить его с помощью аргумента конструктора
var class:Class = new Class(this);
и затем в файле класса
public function Class(objectRef:Object) {
_parentRef = objectRef;
}
Эта ссылка также требует, чтобы вы вернулись, используя иерархию дочерних элементов к родительским.
Я также мог бы импортировать этот класс, а затем использовать прямой путь к файлу для ссылки на метод внутри этого класса, независимо от того, является ли он родительским или нет.
import com.site.Class;
com.site.Class.method();
Конечно, там отношение родитель-потомок не имеет значения, потому что я обращаюсь к методу или свойству напрямую через импортированный класс.
Мне просто не хватает чего-то действительно очевидного. Я в основном ищу подтверждение, являются ли это правильными способами ссылки на родителя, и если да, то какой из них наиболее идеален, или я пропускаю что-то еще?