2.2 Deep and shallow copies - TeresaMarbanCastro/Learning-Kairos GitHub Wiki

Copia Profunda vs copia superficial: deep vs shallow

Deep copy o copia profunda: hace una copia de todo. Es una duplicación. Mientras que el shallow copy sólo copia lo principal. Es una copia de la colección de estructuras, no de los elementos.

En el caso de Arrays y objetos hay también distinción.

En este ejemplo se ve que al copiar una variable e igualar su valor, no se modifica la original, ya que se trata de objetos primitivos. Shallow Copy

Al nombrar una variable y asignarle un valor, cuando igualas otra variable a esta primera, no se sobreescribe la segunda si cambias la primera. Ya que el valor de la variable y el nombre se han guardado a la vez.

Al hacer lo “mismo” con un array, si cambias un elemento del segundo array, que hace referencia al primero, sí que te cambia el primero. Esto es porque el array te señala dónde tiene que mirar el segundo. Mientras que con los valores primitivos, el valor original nunca cambia. Para hacer una copia y no una referencia directa, se usan los métodos de arrays como: .slice: El método slice() extrae una sección de una cadena y devuelve una cadena nueva. .spread Array.from y luego ya cambiar la copia como quieras sin tocar la referencia original

Para los objetos pasa lo mismo que con los arrays: