本文共 1171 字,大约阅读时间需要 3 分钟。
AS3 对象 深度复制
package cn.lite3.utils{ import flash.net.getClassByAlias; import flash.net.registerClassAlias; import flash.utils.ByteArray; import flash.utils.getQualifiedClassName; public class ObjectUtil { // 对象深度复制 将实例及子实例的所有成员(属性和方法, 静态的 // 除外)都复制一遍, (引用要重新分配空间!) // 局限性 // 1. 不能对显示对象进行复制 // 2. obj必须有默认构造函数(参数个数为0,或都有默认值) // 3. obj 里有obj类型 之外 的非内置数据类型时, 返回类型将不//确定 // @param obj strong strong 深复制的对象 // @return static public function deepClone(obj) { var aliasClass:Class; var classDefinition:Class = Object(obj).constructor as Class; var className:String = getQualifiedClassName(obj); // 获取已注册 obj的类名的类型 try { aliasClass = getClassByAlias(className); }catch (errError) { } // 没有注册 AliasName if (!aliasClass) { registerClassAlias(className, classDefinition); } // 已经注册了 AliasName ,且不是它的全类名,要重新注册个 else if (aliasClass != classDefinition) { registerClassAlias(className + “”+ className, classDefinition); } else{ // 注册的AliasName 为 全类名 var byteArray:ByteArray = new ByteArray(); byteArray.writeObject(obj); byteArray.position = 0; return byteArray.readObject(); } }}
转载地址:http://iejsi.baihongyu.com/