·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]AS3下对数组操作复制

时间:2014-08-09 14:59酷播
[AS3]AS3下对数组操作复制,如果数组中的元素全部是基元数据类型,复制没有浅复制和深复制的分别。当数组中元素是复杂数据类型,即引用类型时,那么复制就分为浅复制和深复制。

[AS3]AS3下对数组操作复制

  1. import flash.utils.ByteArray; 
  2. var a:Array=["a","b"]; 
  3. var b:Array=[]; 
  4. b=clone(a); 
  5. trace(b); 
  6.  
  7. function clone(source:Object):* 
  8. var myBA:ByteArray = new ByteArray(); 
  9. myBA.writeObject(source); 
  10. myBA.position = 0
  11. 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

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器