var ar:Array= [ [[1,2],[3,4]], [[5,6], [7,8]] ];
//var a1:Array=ar[0].concat();
var a1:Array=clone(ar[0]);
trace(ar); //1,2,3,4,5,6,7,8
trace(a1); //1,2,3,4
ar[0][0][0]=200;
a1[0][0]=345;
trace(ar); //200,2,3,4,5,6,7,8
trace(a1); //345,2,3,4
import flash.utils.ByteArray;
function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return(myBA.readObject());
}
如果不是用clone复制,会发现复制出来的数组和原数组有关联
AS的所谓多维数组只是数组的数组,并不是真正意义上的多维数组
这里还有一个注意点,对象是基于引用访问的
综合这些,其实说白了,AS的只是一维数组,
只是这个数组的item是一个 array对像,
而这个一维数组只是一组array对象的handle,
你concat出来的只是一组新的handle ,
但是handle指向的对象并没有clone