Не пойму логику поведения программы.

Код AS3:
package engines
{
public class PlacingShipsByPlayer
{
private var left_to_add:Array = ["", 4, 3, 2, 1];
private static const left_to_addDefault:Array = ["", 4, 3, 2, 1];
private function makeDefaultState():void
{
...
left_to_add = left_to_addDefault; // тупо приравниваю 2 массива.
...
}
// с течением времени вызывается данная функция
private function defWhatButtsAdd():void
{
trace( left_to_add +" / " + left_to_addDefault); //тут 2 массива равны и дефолтное состояние отличается от объявленной
}

Код:
Output: ,1,1,2,1 / ,1,1,2,1
Больше нигде дефолтное состояние не применяется в коде.
Собственно вопрос: почему, в данном случае, константная переменная изменилась? И изменяется синхронно с обычным массивом (left_to_add в данном случае)
UPD: Приравнивание через For прокатило, но все равно не понятно почему происходит явление описанное выше.