1、如果数组中的元素全部是基元数据类型,复制没有浅复制和深复制的分别。
当数组中元素是复杂数据类型,即引用类型时,那么复制就分为钱复制和深复制。
2、浅复制
实例
var copy:Array=oroginal.slice();
var copy:Array=oroginal.concat();
array=["abc","def","haha","hua"];
var oroginal:Array=[1,"hua",array];//array是个数组,即引用类型
var copy:Array=oroginal.slice();
//或var copy:Array=oroginal.concat();
copy[2][1]="zhang";
trace(oroginal);//1,hua,abc,zhang,haha,hua
trace(copy);//1,hua,abc,zhang,haha,hua
3、深复制 ByteArray
深复制生成的新数组,其所有元素都是真正的原数组元素的备份。
这时两个数组中相同位置的元素,存放着不同的引用,指向不同的对象。
深复制用到ByteArray类
array=["abc","def","haha","hua"];
var oroginal:Array=[1,"hua",array];
var foo:ByteArray=new ByteArray();
foo.writeObject(oroginal);
foo.position=0;
var copy:Array=foo.readObject() as Array;
copy[2][1]="zhang";
trace(oroginal);//1,hua,abc,def,haha,hua
trace(copy);//1,hua,abc,zhang,haha,hua