Klasa Array nie dysponuje wbudowaną metodą wykonywania kopii tablic. Możliwe jest jednak utworzenie
płytkiej
kopii
tablicy przez wywołanie albo metody
concat()
albo
slice()
bez argumentów. W kopii płytkiej, jeśli tablica oryginalna zawiera elementy będące obiektami, kopiowane są wyłącznie odwołania do tych obiektów, nie zaś same obiekty. Kopia wskazuje na te same obiekty, co oryginał. Wszelkie zmiany dokonane względem obiektów są odzwierciedlane w obu tablicach.
Kopia głęboka
charakteryzuje się tym, że wszelkie znalezione w tablicy oryginalnej obiekty są również kopiowane. W ten sposób nowa tablica nie wskazuje na te same obiekty co tablica oryginalna. Kopiowanie głębokie wymaga więcej niż jednego wiersza kodu, co zwykle prowadzi do utworzenia funkcji. Funkcję taką można utworzyć jako globalną funkcję narzędziową lub w postaci metody podklasy Array.
W poniższym przykładzie zdefiniowano funkcję o nazwie
clone()
, która realizuje głębokie kopiowanie. Algorytm zapożyczono z powszechnie znanych technik programowania w języku Java. Funkcja ta umożliwia tworzenie głębokiej kopii przez serializację tablicy do instancji klasy ByteArray, a następnie odczytanie tablicy z powrotem do nowej tablicy. Funkcja ta przyjmuje obiekt, zatem może zostać zastosowana zarówno wobec tablic indeksowanych jak i asocjacyjnych, zgodnie z poniższym kodem przykładowym:
import flash.utils.ByteArray;
function clone(source:Object):*
{
var myBA:ByteArray = new ByteArray();
myBA.writeObject(source);
myBA.position = 0;
return(myBA.readObject());
}