as3 深复制

import flash.utils.ByteArray;

import flash.utils.getQualifiedClassName;

import flash.net.*;

//支持自定义类
//function copy(source:Object) :* {
//
//    var typeName:String = getQualifiedClassName(source);//获取全名
//
//    trace("输出类的结构"+typeName);
//
//    //return;
//
//    var packageName:String = typeName.split("::")[0];//切出包名
//
//    trace("类的名称"+packageName);
//
//    var type:Class = getDefinitionByName(typeName) as Class;//获取Class
//
//    trace(type);
//
//    registerClassAlias(packageName, type);//注册Class
//
//    //复制对象
//
//    var copier:ByteArray = new ByteArray();
//
//    copier.writeObject(source);
//
//    copier.position = 0;
//
//    return copier.readObject();
//
//}

//不支持自定义类
function copy(value:Object):*
{

	var buffer:ByteArray = new ByteArray();

	buffer.writeObject(value);

	buffer.position = 0;

	var result:Object = buffer.readObject();

	return result;

}

var init_arr:Array=[[1,2],[1,2]];
var copy_arr:Array=copy(init_arr);
init_arr[0]=[3,4];
trace("init_arr: "+init_arr);
trace("copy_arr: "+copy_arr);


var init_obj:Object = {name:"name01",data:"data01"};
var copy_obj:Object=copy(init_obj);
init_obj["name"]="dt";
var i:String;
for(i in init_obj){
	trace("init_obj: 键:"+i+" 值: "+init_obj[i]);
}
for(i in copy_obj){
	trace("copy_obj: 键:"+i+" 值: "+copy_obj[i]);
}