package JM_LIB.utils
{
import mx.utils.ObjectUtil;
/**
* Clones any POD (plain old data) class:
* @author JMIM
*/
public class PODClonerUtil
{
public function PODClonerUtil() { };
public static function clone(inObj:Object):*
{
//Step1: Get class of inObj, and instantiate a new object of that type.
var c:Class = inObj.constructor;
var newObj:Object = new c(); //POD clases take zero parameters.
//Use Flex's ObjectUtil to extract properties of object.
var classInfo:Object = ObjectUtil.getClassInfo( c );
var propArr:Array = classInfo.properties as Array;
var prop:String;
//must use this type of loop. Because the other will NOT work.
for each (prop in propArr)
{
if (prop == "prototype") { continue;}
newObj[ prop ] = inObj[ prop ];
}
/*
* //Does same thing as for each loop above.
for (var i:int = 0; i < propArr.length; i++)
{
prop = propArr[i].localName;
if (prop == "prototype") { continue;}
newObj[ prop ] = inObj[ prop ];
}
*/
return newObj;
}
}
}
Sunday, February 10, 2013
POD Cloner iterates through non-dynamic properties just fine
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment