原:http://www.e-snowlife.com/?p=272
对象的深度拷贝方法,在应用中经常需要传递一个对象参数,传递过去的对象的修改又不希望对原对象产生影响,用该对象方法可以轻松实现了
代码:
package {
import flash.utils.ByteArray;
import flash.utils.getQualifiedClassName;
import flash.utils.getDefinitionByName;
import flash.net.registerClassAlias;
public class CopyUtil{
public static function clone(object:Object):Object{
var qClassName:String = getQualifiedClassName(object);
var objectType:Class = getDefinitionByName(qClassName) as Class;
registerClassAlias(qClassName, objectType);
var copier : ByteArray = new ByteArray();
copier.writeObject(object);
copier.position = 0;
return copier.readObject();
}
}
}
使用方法:
代码:
var instanceA : ClassA = new ClassA();
var instanceCopy : ClassA = CopyUtil.clone(instanceA ) as ClassA;
trace(instanceCopy == instanceA)//fale;
trace(instanceCopy is ClassA) // true;
trace(instanceCopy is superClass) //true;