AS3: vérifier si une variable est du type D'objet
je veux faire quelque chose comme cela en Actionscript 3:
if(variable is Object) ...;
else ...;
Où variable
peut être String()
, Number()
,Array()
,Object()
...
actuellement la vérification ci-dessus retourne true pour tous ces types, ce qui est logique. Je veux seulement qu'il retourne true pour les objets faits avec new Object()
, cependant.
Toute aide serait grandement appréciée!
4 réponses
Vous devriez essayer d'utiliser ces fonctions - getQualifiedClassName
et typeof
. Voici un code montrant comment ils se comportent pour les différents types de données que vous avez énumérés, voir la différence pour le tableau et les nombres en particulier:
Code:
var o = new Array();
trace ("var o = new Array()");
trace (getQualifiedClassName(o));
trace (typeof(o));
var o = new Object();
trace ("var o = new Object();");
trace (getQualifiedClassName(o));
trace (typeof(o));
var o = new String();
trace ("var o = new String()");
trace (getQualifiedClassName(o));
trace (typeof(o));
var o = new Number()
trace ("var o = new Number()");
trace (getQualifiedClassName(o));
trace (typeof(o));
var o = 3.14;
trace ("var o = 3.14");
trace (getQualifiedClassName(o));
trace (typeof(o));
Résultat:
var o = new Array()
Array
object
var o = new Object();
Object
object
var o = new String()
String
string
var o = new Number()
int
number
var o = 3.14
Number
number
je suppose que getQualifiedClassName serait ce que vous cherchez, ce qui est dans le paquet flash utils:
import flash.utils.getQualifiedClassName;
Essayer quelque chose de fondé, autour de l'une de ces:
if (variable.constructor.toString().match(/object/i) == 'Object')
if (variable.constructor.toString().indexOf("Object") != -1)
si l'objet est un Object () la chaîne du constructeur sera quelque chose comme
function Object() { ... }
donc vous pouvez vérifier pour cela.
vous pouvez aussi utiliser getQualifiedSuperclassName
qui renvoie null
pour les Object
type car il n'a pas une super-classe de:
public static function isObject( obj:* ):Boolean
{
if ( obj == null )
return false;
return ( getQualifiedSuperclassName( obj ) == null );
}
voilà, essayez ça..
var ob:Object = new Object();
trace(ob); //[object Object]
trace(typeof(ob) == "object"); //true
if(typeof(ob) == "object"){
//true
}else{
//false
}