¿Qué son la copia profunda y la copia superficial?
La copia profunda y la copia superficial se distinguen principalmente en función de los diferentes niveles de copia al copiar objetos. Mucha gente está confundida acerca de la asignación de variables constantes aquí. Para un tipo de datos complejo como una matriz de JavaScript, asignarlo a otra variable en realidad simplemente copia la dirección del objeto y las dos variables apuntan al mismo objeto, por lo que la asignación ordinaria no es ni una copia profunda ni una copia superficial.
La copia profunda y la copia superficial deben prestar atención a la copia de elementos variables:
En la copia superficial, la dirección del nuevo objeto copiado es diferente de la dirección del objeto original. pero el nuevo objeto La dirección de los elementos variables (como la lista) en el objeto es la misma que la dirección en el objeto original, lo que significa que la copia superficial copia la estructura de datos superficial (elementos inmutables) y los elementos variables en los objetos no se copian como estructuras de datos profundas en la nueva dirección.
Pero apunta a la misma dirección que el elemento variable en el objeto original, por lo que cuando el elemento variable se modifica en el nuevo objeto o en el objeto original, ambos objetos cambiarán al mismo tiempo, pero la profundidad la copia no lo hará. Ésta es la diferencia más fundamental entre copia superficial y copia profunda.