Adobe® Flex® 4 Language Reference
Hide Packages and Classes List |  Packages  |  Classes  |  Index  |  Appendixes
mx.utils 
ObjectUtil 
Packagemx.utils
Classpublic class ObjectUtil
InheritanceObjectUtil Inheritance Object

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

The ObjectUtil class is an all-static class with methods for working with Objects within Flex. You do not create instances of ObjectUtil; instead you simply call static methods such as the ObjectUtil.isSimple() method.



Public Properties
 PropertyDefined By
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
 Inheritedprototype : Object
[static] A reference to the prototype object of a class or function object.
Object
Public Methods
 MethodDefined By
  
[static] Clones the specified Object and returns a reference to the clone.
ObjectUtil
  
compare(a:Object, b:Object, depth:int = -1):int
[static] Compares the Objects and returns an integer value indicating if the first item is less than greater than or equal to the second item.
ObjectUtil
  
[static] Copies the specified Object and returns a reference to the copy.
ObjectUtil
  
[static] Compares the two Date objects and returns an integer value indicating if the first Date object is before, equal to, or after the second item.
ObjectUtil
  
getClassInfo(obj:Object, excludes:Array = null, options:Object = null):Object
[static] Returns information about the class, and properties of the class, for the specified Object.
ObjectUtil
  
hasMetadata(obj:Object, propName:String, metadataName:String, excludes:Array = null, options:Object = null):Boolean
[static] Uses getClassInfo and examines the metadata information to determine whether a property on a given object has the specified metadata.
ObjectUtil
 Inherited
Indicates whether an object has a specified property defined.
Object
  
[static] Returns true if the object is an instance of a dynamic class.
ObjectUtil
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
  
[static] Returns true if the object reference specified is a simple data type.
ObjectUtil
  
[static] Compares two numeric values.
ObjectUtil
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
  
stringCompare(a:String, b:String, caseInsensitive:Boolean = false):int
[static] Compares two String values.
ObjectUtil
 Inherited
Returns the string representation of this object, formatted according to locale-specific conventions.
Object
  
toString(value:Object, namespaceURIs:Array = null, exclude:Array = null):String
[static] Pretty-prints the specified Object into a String.
ObjectUtil
 Inherited
Returns the primitive value of the specified object.
Object
Method Detail

clone

()method
public static function clone(value:Object):Object

Language Version: ActionScript 4.0
Product Version: Flex 4
Runtime Versions: Flash Player 9, AIR 1.1

Clones the specified Object and returns a reference to the clone. The clone is made using a native serialization technique. This means that custom serialization will be respected during the cloning. clone() differs from copy() in that the uid property of each object instance is retained.

This method is designed for cloning data objects, such as elements of a collection. It is not intended for cloning a UIComponent object, such as a TextInput control. If you want to clone specific UIComponent objects, you can create a subclass of the component and implement a clone() method.

Parameters

value:Object — Object that should be cloned.

Returns
Object — Clone of the specified Object.

compare

()method 
public static function compare(a:Object, b:Object, depth:int = -1):int

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Compares the Objects and returns an integer value indicating if the first item is less than greater than or equal to the second item. This method will recursively compare properties on nested objects and will return as soon as a non-zero result is found. By default this method will recurse to the deepest level of any property. To change the depth for comparison specify a non-negative value for the depth parameter.

Parameters

a:Object — Object.
 
b:Object — Object.
 
depth:int (default = -1) — Indicates how many levels should be recursed when performing the comparison. Set this value to 0 for a shallow comparison of only the primitive representation of each property. For example:
      var a:Object = {name:"Bob", info:[1,2,3]};
      var b:Object = {name:"Alice", info:[5,6,7]};
      var c:int = ObjectUtil.compare(a, b, 0);

In the above example the complex properties of a and b will be flattened by a call to toString() when doing the comparison. In this case the info property will be turned into a string when performing the comparison.

Returns
int — Return 0 if a and b are null, NaN, or equal. Return 1 if a is null or greater than b. Return -1 if b is null or greater than a.

copy

()method 
public static function copy(value:Object):Object

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Copies the specified Object and returns a reference to the copy. The copy is made using a native serialization technique. This means that custom serialization will be respected during the copy.

This method is designed for copying data objects, such as elements of a collection. It is not intended for copying a UIComponent object, such as a TextInput control. If you want to create copies of specific UIComponent objects, you can create a subclass of the component and implement a clone() method, or other method to perform the copy.

Parameters

value:Object — Object that should be copied.

Returns
Object — Copy of the specified Object.

dateCompare

()method 
public static function dateCompare(a:Date, b:Date):int

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Compares the two Date objects and returns an integer value indicating if the first Date object is before, equal to, or after the second item.

Parameters

a:Date — Date object.
 
b:Date — Date object.

Returns
int — 0 if a and b are equal (or both are null); -1 if a is before b (or b is null); 1 if a is after b (or a is null).

getClassInfo

()method 
public static function getClassInfo(obj:Object, excludes:Array = null, options:Object = null):Object

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Returns information about the class, and properties of the class, for the specified Object.

Parameters

obj:Object — The Object to inspect.
 
excludes:Array (default = null) — Array of Strings specifying the property names that should be excluded from the returned result. For example, you could specify ["currentTarget", "target"] for an Event object since these properties can cause the returned result to become large.
 
options:Object (default = null) — An Object containing one or more properties that control the information returned by this method. The properties include the following:
  • includeReadOnly: If false, exclude Object properties that are read-only. The default value is true.
  • includeTransient: If false, exclude Object properties and variables that have [Transient] metadata. The default value is true.
  • uris: Array of Strings of all namespaces that should be included in the output. It does allow for a wildcard of "*". By default, it is null, meaning no namespaces should be included. For example, you could specify ["mx_internal", "mx_object"] or ["*"].

Returns
Object — An Object containing the following properties:
  • name: String containing the name of the class.
  • properties: Sorted list of the property names of the specified object, or references to the original key if the specified object is a Dictionary. The individual array elements are QName instances, which contain both the local name of the property as well as the URI.

hasMetadata

()method 
public static function hasMetadata(obj:Object, propName:String, metadataName:String, excludes:Array = null, options:Object = null):Boolean

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Uses getClassInfo and examines the metadata information to determine whether a property on a given object has the specified metadata.

Parameters

obj:Object — The object holding the property.
 
propName:String — The property to check for metadata.
 
metadataName:String — The name of the metadata to check on the property.
 
excludes:Array (default = null) — If any properties need to be excluded when generating class info. (Optional)
 
options:Object (default = null) — If any options flags need to changed when generating class info. (Optional)

Returns
Boolean — true if the property has the specified metadata.

isDynamicObject

()method 
public static function isDynamicObject(obj:Object):Boolean

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Returns true if the object is an instance of a dynamic class.

Parameters

obj:Object

Returns
Boolean

isSimple

()method 
public static function isSimple(value:Object):Boolean

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Returns true if the object reference specified is a simple data type. The simple data types include the following:

  • String
  • Number
  • uint
  • int
  • Boolean
  • Date
  • Array

Parameters

value:Object — Object inspected.

Returns
Booleantrue if the object specified is one of the types above; false otherwise.

numericCompare

()method 
public static function numericCompare(a:Number, b:Number):int

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Compares two numeric values.

Parameters

a:Number — First number.
 
b:Number — Second number.

Returns
int — 0 is both numbers are NaN. 1 if only a is a NaN. -1 if only b is a NaN. -1 if a is less than b. 1 if a is greater than b.

stringCompare

()method 
public static function stringCompare(a:String, b:String, caseInsensitive:Boolean = false):int

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Compares two String values.

Parameters

a:String — First String value.
 
b:String — Second String value.
 
caseInsensitive:Boolean (default = false) — Specifies to perform a case insensitive compare, true, or not, false.

Returns
int — 0 is both Strings are null. 1 if only a is null. -1 if only b is null. -1 if a precedes b. 1 if b precedes a.

toString

()method 
public static function toString(value:Object, namespaceURIs:Array = null, exclude:Array = null):String

Language Version: ActionScript 3.0
Product Version: Flex 3
Runtime Versions: Flash Player 9, AIR 1.1

Pretty-prints the specified Object into a String. All properties will be in alpha ordering. Each object will be assigned an id during printing; this value will be displayed next to the object type token preceded by a '#', for example:

      (mx.messaging.messages::AsyncMessage)#2.

This id is used to indicate when a circular reference occurs. Properties of an object that are of the Class type will appear only as the assigned type. For example a custom definition like the following:

        public class MyCustomClass {
          public var clazz:Class;
        }

With the clazz property assigned to Date will display as shown below:

       (somepackage::MyCustomClass)#0
          clazz = (Date)

Parameters

value:Object — Object to be pretty printed.
 
namespaceURIs:Array (default = null) — Array of namespace URIs for properties that should be included in the output. By default only properties in the public namespace will be included in the output. To get all properties regardless of namespace pass an array with a single element of ".
 
exclude:Array (default = null) — Array of the property names that should be excluded from the output. Use this to remove data from the formatted string.

Returns
String — String containing the formatted version of the specified object.

Example
How to use this example
      // example 1
      var obj:AsyncMessage = new AsyncMessage();
      obj.body = [];
      obj.body.push(new AsyncMessage());
      obj.headers["1"] = { name: "myName", num: 15.3};
      obj.headers["2"] = { name: "myName", num: 15.3};
      obj.headers["10"] = { name: "myName", num: 15.3};
      obj.headers["11"] = { name: "myName", num: 15.3};
      trace(ObjectUtil.toString(obj));
     
      // will output to flashlog.txt
      (mx.messaging.messages::AsyncMessage)#0
        body = (Array)#1
          [0] (mx.messaging.messages::AsyncMessage)#2
            body = (Object)#3
            clientId = (Null)
            correlationId = ""
            destination = ""
            headers = (Object)#4
            messageId = "378CE96A-68DB-BC1B-BCF7FFFFFFFFB525"
            sequenceId = (Null)
            sequencePosition = 0
            sequenceSize = 0
            timeToLive = 0
            timestamp = 0
        clientId = (Null)
        correlationId = ""
        destination = ""
        headers = (Object)#5
          1 = (Object)#6
            name = "myName"
            num = 15.3
          10 = (Object)#7
            name = "myName"
            num = 15.3
          11 = (Object)#8
            name = "myName"
            num = 15.3
          2 = (Object)#9
            name = "myName"
            num = 15.3
        messageId = "1D3E6E96-AC2D-BD11-6A39FFFFFFFF517E"
        sequenceId = (Null)
        sequencePosition = 0
        sequenceSize = 0
        timeToLive = 0
        timestamp = 0
     
      // example 2 with circular references
      obj = {};
      obj.prop1 = new Date();
      obj.prop2 = [];
      obj.prop2.push(15.2);
      obj.prop2.push("testing");
      obj.prop2.push(true);
      obj.prop3 = {};
      obj.prop3.circular = obj;
      obj.prop3.deeper = new ErrorMessage();
      obj.prop3.deeper.rootCause = obj.prop3.deeper;
      obj.prop3.deeper2 = {};
      obj.prop3.deeper2.deeperStill = {};
      obj.prop3.deeper2.deeperStill.yetDeeper = obj;
      trace(ObjectUtil.toString(obj));
     
      // will output to flashlog.txt
      (Object)#0
        prop1 = Tue Apr 26 13:59:17 GMT-0700 2005
        prop2 = (Array)#1
          [0] 15.2
          [1] "testing"
          [2] true
        prop3 = (Object)#2
          circular = (Object)#0
          deeper = (mx.messaging.messages::ErrorMessage)#3
            body = (Object)#4
            clientId = (Null)
            code = (Null)
            correlationId = ""
            destination = ""
            details = (Null)
            headers = (Object)#5
            level = (Null)
            message = (Null)
            messageId = "14039376-2BBA-0D0E-22A3FFFFFFFF140A"
            rootCause = (mx.messaging.messages::ErrorMessage)#3
            sequenceId = (Null)
            sequencePosition = 0
            sequenceSize = 0
            timeToLive = 0
            timestamp = 0
          deeper2 = (Object)#6
            deeperStill = (Object)#7
              yetDeeper = (Object)#0
     
     // example 3 with Dictionary
     var point:Point = new Point(100, 100);
     var point2:Point = new Point(100, 100);
     var obj:Dictionary = new Dictionary();
     obj[point] = "point";
     obj[point2] = "point2";
     obj["1"] = { name: "one", num: 1};
     obj["two"] = { name: "2", num: 2};
     obj[3] = 3;
     trace(ObjectUtil.toString(obj));
     
     // will output to flashlog.txt
     (flash.utils::Dictionary)#0
       {(flash.geom::Point)#1
         length = 141.4213562373095
         x = 100
         y = 100} = "point2"
       {(flash.geom::Point)#2
         length = 141.4213562373095
         x = 100
         y = 100} = "point"
       {1} = (Object)#3
         name = "one"
         num = 1
       {3} = 3
       {"two"} = (Object)#4
         name = "2"
         num = 2