var a:Array = ["a","b","c"];
var b:Array;
/* insert code here to copy 'a' and assign it to 'b'*/
var a:Array = ["a","b","c"];
var b:Array;
/* insert code here to copy 'a' and assign it to 'b'*/
摘自As3参考指南:
Array类没有内置的复制数组的方法。您可以通过调用不带参数的concat()或slice()方法来创建一个浅拷贝。在浅拷贝中,如果原始数组具有对象元素,则仅复制对对象的引用而不是对象本身。副本指向与原始数组相同的对象。对对象所做的任何更改都会反映在两个数组中。
如果在concat和slice之间选择,由于性能方面的优势,应该选择Concat。
在此处阅读更多关于此主题的信息:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7ee7.html
为了澄清:
private function shallowCopy():void{
var a:Array = ["h", "e", "l", "l", "o"];
var b:Array = a.concat();
trace("Shallow copy:");
trace("Before delete: " + a);
trace("Before delete: " + b);
delete a[0];
trace("After delete: " + a);
trace("After delete: " + b);
}
var b:Array = a.concat();
var ba:ByteArray = new ByteArray();
ba.writeObject(a); // Copy the original array (a) into a ByteArray instance
ba.position = 0; // Put the cursor at the beginning of the ByteArray to read it
var b:Array = ba.readObject(); // Store a copy of the array in the destination array (b)
ba.clear(); // Free memory
这对于复制没有任何concat或splice方法的对象也非常有用。