1.
如何动态获取Object中的属性和值
var ct:CustomObject=newCustomObject();
var xml:XML = describeType(ct);
for each(var accessor in xml..accessor){
var name:String= accessor.@name;
var type:String= accessor.@type;
trace(ct[name]);
}
2. 对象之间的拷贝
/**
* copies a source object to a destination object
* @param sourceObject the source object
* @param destinationObject the destination object
*
*/
public static function copyObject(sourceObject:Object, destinationObject:Object):void
{
// check if the objects are not null
if((sourceObject) && (destinationObject)) {
try
{
//retrive information about the source object via XML
var sourceInfo:XML = describeType(sourceObject);
var objectProperty:XML;
var propertyName:String;
// loop through the properties
for each(objectProperty in sourceInfo.variable)
{
propertyName = objectProperty.@name;
if(sourceObject[objectProperty.@name] != null)
{
if(destinationObject.hasOwnProperty(objectProperty.@name)) {
destinationObject[objectProperty.@name] = sourceObject[objectProperty.@name];
}
}
}
//loop through the accessors
for each(objectProperty in sourceInfo.accessor) {
if(objectProperty.@access == "readwrite") {
propertyName = objectProperty.@name;
if(sourceObject[objectProperty.@name] != null)
{
if(destinationObject.hasOwnProperty(objectProperty.@name)) {
destinationObject[objectProperty.@name] = sourceObject[objectProperty.@name];
}
}
}
}
}
catch (err:*) {
;
}
}