对象的深度拷贝方法,在
应用中经常需要传递一个对象参数,传递过去的对象的修改又不希望对原对象产生影响,用该对象方法可以轻松实现了
使用方法:
- 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;