2010-01-09 5 views
3

J'ai une fonction qui prend comme paramètres 2 instances d'une classe (personnalisée). Mais ils peuvent chacun faire partie de plusieurs classes, et je dois ensuite appeler une autre fonction en fonction de leur type. Je voudrais faire quelque chose comme ceci:obtenir le nom d'une classe à travers une instance de cette classe

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

Dois-je aller et définir le terme « classname » dans chacune de mes classes, ou est-il une meilleure façon d'obtenir le nom de la classe d'une instance? Je ne sais pas comment obtenir typeof() pour retourner autre chose que 'object' pour une classe personnalisée, c'est peut-être possible?

EDIT: Il serait incommode d'utiliser l'opérateur instanceof, car chaque classe peut être 1 sur 6 (actuellement).

Répondre

0

Vous pouvez utiliser instanceof

var a:Number; 

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

autre façon d'obtenir la classe d'une instance utilise

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

vous peut faire quelque chose comme ceci:

switch(c) 
{ 
    case Circle: 
     whatever(); 
} 
+0

Cela veut travailler si vous remplacez le cercle avec l'objet, comme il le devrait. –

Questions connexes