La cosa migliore è usare l'operatore "è" e usare qualcosa come:
for(var i:int = 0; i < componentArr.length; i++)
{
var comp:UIComponent = componentArr[ i ];
if(comp is DataGrid)
// Handle DataGrid functionality here.
else if (comp is DropDown)
// Handle DropDown here
}
C'è un problema con questo approccio, tuttavia. Poiché "is" restituisce true per tutte le classi discendenti, devi mettere tutte le classi discendenti prima dei loro antenati - L'elenco deve venire prima di ListBase. Ciò può causare alcuni fastidi.
// This is important to remember:
var mc:MovieClip = new MovieClip();
trace(mc is Sprite); // true
C'è un'altra possibilità per i casi in cui si desidera gli oggetti di essere un membro di una classe specifica (e non una classe discendente): è possibile utilizzare la proprietà constructor dell'oggetto e utilizzare un'istruzione switch.
for(var i:int = 0; i < componentArr.length; i++)
{
var klass:Class = componentArr[ i ].constructor;
switch(klass)
{
case DataGrid:
// Handle DataGrid
break;
case Text:
// Handle Text
break;
case NumericStepper:
// Handle NumericStepper
break;
default:
// Handle default
break;
}
}
appena fatto con "è": var b: Boolean = arr [i] è TextInput, è questo l'unico e il modo migliore per farlo? –
ObjectUtil.getClassInfo ( – cloverink