Search code examples
actionscript-3actionscript

AS3: Checking if a variable is of the Object type


I want to do something like this in Actionscript 3:

if(variable is Object) ...;
else ...;

Where variable could be a String(), Number(), Array(), Object()...

Currently the above check returns true for all of these types, which makes sense. I only want it to return true for objects made with new Object(), however.

Any help would be much appreciated!


Solution

  • You should try to use this functions - getQualifiedClassName and typeof. Here's a code showing how they behave for different data types you've listed, see the difference for the Array and Numbers especially:

    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));
    

    Result:

    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
    

    I assume getQualifiedClassName would be what you're looking for, which is in the flash utils package:

    import flash.utils.getQualifiedClassName;