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