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
}