получение имени класса через экземпляр этого класса

У меня есть функция, которая принимает в качестве параметров 2 экземпляра (настраиваемого) класса. Но каждый из них может быть одним из нескольких классов, и мне нужно затем вызвать другую функцию в зависимости от того, какого они типа. Я бы хотел сделать что-то вроде этого:

function any_any(inst1, inst2) {
    this[inst1.classname + "_" + inst2.classname] (inst1, inst2);
}
function Circle_Line(circle:Circle, line:Line) {
    //treat this case
}

Должен ли я определить «имя класса» в каждом из моих классов, или есть лучший способ получить имя класса экземпляра? Я не знаю, как заставить typeof () возвращать что-либо, кроме «объекта» для пользовательского класса, возможно, это возможно?

РЕДАКТИРОВАТЬ: было бы неудобно использовать оператор instanceof, поскольку каждый класс может быть 1 из 6 (в настоящее время).


person Ponkadoodle    schedule 09.01.2010    source источник


Ответы (3)


Вы можете использовать instanceof или оператор 'is' или метод getQualifiedClassName

person Gabriel McAdams    schedule 09.01.2010

Вы можете использовать instanceof

   var a:Number;

   if (a instanceof Number)
   {
       trace("a is a number");
   }
person slayerIQ    schedule 09.01.2010

другой способ получить класс экземпляра - использовать

var c:Class = instance["constructor"];

тогда вы можете сделать что-то вроде этого:

switch(c)
{
    case Circle:
        whatever();
}
person frankhermes    schedule 25.01.2010
comment
Это должно сработать, если вы замените Circle на Object, как бы это ни было. - person Ilya Gazman; 28.12.2013