Получение названия класса через экземпляр этого класса
-
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();
}