получить имя класса через экземпляр этого класса - PullRequest
3 голосов
/ 09 января 2010

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 09 января 2010

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

0 голосов
/ 25 января 2010

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

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

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

switch(c)
{
    case Circle:
        whatever();
}
0 голосов
/ 09 января 2010

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

   var a:Number;

   if (a instanceof Number)
   {
       trace("a is a number");
   }
...