Все что не является числом, символом или строкой, является лишь указателем на область памяти, от куда начинается этот Обьект,
Массив же как обьект у тебя это указатель к примеру он равен
let aaa = [1,2,3] // aaa на самом деле на низком уровне равно
//к примеру 0x8e118e8e - это адрес в памяти где будет хранится
1(первый элемент массива), это указатель на первый элемент.
Тогда 2 будет(тип Int = 4 байта) =0x8e118e8e+4 = 0x8e118e91.
А массивы в js еще и динамические как и типы данных!
Если нужно скопировать, то нужно скопировать все его значения, которые не являются объектами.
Использую [].slise(); можешь создать пустой массив, и через for( ... ) заполнить его пройдясь по элементам.