2016-10-13 00:16:48 点击量:4 标签: 收藏本文
[AS3]AS3下对数组操作复制
- import flash.utils.ByteArray;
- var a:Array=["a","b"];
- var b:Array=[];
- b=clone(a);
- trace(b);
- function clone(source:Object):*
- {
- var myBA:ByteArray = new ByteArray();
- myBA.writeObject(source);
- myBA.position = 0;
- return(myBA.readObject());
- }
如果数组中的元素全部是基元数据类型,复制没有浅复制和深复制的分别。
当数组中元素是复杂数据类型,即引用类型时,那么复制就分为浅复制和深复制。
浅复制
arr.slice();
arr.concat();
//使用浅复制生成的数组,其个元素存放的只是引用。
//两个数组中相同位置的元素存放的引用指向同一个对象。
//那么,该对元素的操作,等于就是操作引用指向的对象。
//如果该对象的状态发生变化,那么也会影响到另一个数组中相应位置的元素
var arr:Array = [1,5,3,9,[5,1]];
var copy:Array = arr.slice();
trace(copy);//1,5,3,9,5,1
copy[4][0] = 9
trace(arr)//1,5,3,9,9,1
trace(copy)//1,5,3,9,9,1
=====================
var arr:Array = [1,5,3,9];
var copy:Array = arr.slice();
trace(copy);//1,5,3,9
copy[3] = 5
trace(arr)//1,5,3,9
trace(copy)//1,5,3,5
深复制 ByteArray
深复制生成的新数组,其所有元素都是真正的原数组元素的备份。
这时两个数组中相同位置的元素,存放着不同的引用,指向不同的对象。
深复制用到ByteArray类
var _arr:Array = [1,2,3,[4,5]];
var copy:Array;
var bty:ByteArray=new ByteArray();
bty.writeObject(_arr);
bty.position=0;
copy=bty.readObject();
trace(copy);//1,2,3,4,5
copy[3][1] = 6;
trace(copy);//1,2,3,4,6
trace(_arr)//1,2,3,4,5
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室