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

StackOverflow https://stackoverflow.com/questions/2031951

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

Вы можете использовать случай, или же оператор «есть», или GetQualifiedClassName Метод

Другие советы

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

   var a:Number;

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

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

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

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

switch(c)
{
    case Circle:
        whatever();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top