В ActionScript3 как получить ссылку на класс объекта? - PullRequest
6 голосов
/ 22 января 2009

Как в ActionScript3 получить ссылку на класс объекта?

Ответы [ 2 ]

9 голосов
/ 23 января 2009

Стоит отметить, что объекты XML (XML, XMLList) являются исключением из этого (т. Е. (Новый XML () как объект) .constructor как класс == ноль). Я рекомендую вернуться к getDefinitionByName (getQualifiedClassName), когда конструктор не разрешает:

function getClass(obj : Object) : Class
{
    var cls : Class = (obj as Class) || (obj.constructor as Class);

    if (cls == null)
    {
        cls = getDefinitionByName(getQualifiedClassName(obj));
    }

    return cls;
}

Обратите внимание, что getDefinitionByName выдаст ошибку, если класс определен в другом (включая дочерний) домен приложения из вызывающего кода.

5 голосов
/ 22 января 2009

Вы можете использовать свойство constructor , если ваш объект был создан из класса (из документов: "Если объект является экземпляром класса, свойство конструктора содержит ссылка на объект класса. Если объект создается с помощью функции конструктора, свойство конструктора содержит ссылку на функцию конструктора. "):

var classRef:Class = myObject.constructor as Class;

Или вы можете использовать flash.utils.getQualifiedClassName() и flash.utils.getDefinitionByName() (не очень хороший способ, поскольку это влечет за собой ненужные манипуляции со строками в реализациях этих библиотечных функций):

var classRef:Class = getDefinitionByName(getQualifiedClassName(myObject)) as Class;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...