— — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
Shallow copy
Shallow copy es una copia bit-wise de un objeto. Se crea un nuevo objeto que tiene una copia exacta de los valores del objeto original. Si cualquiera de los campos del objeto son referencias a otros objetos, solo se copian las direcciones de referencia, es decir, solo se copia la dirección de memoria.
copia profunda
una copia profunda copia todos los campos y hace copias de la memoria asignada dinámicamente apuntada por los campos., Una copia profunda se produce cuando un objeto se copia junto con los objetos a los que se refiere.
copia superficial: hace una copia de la referencia a X en Y. piense en ello como una copia de la dirección de X. Por lo tanto, las direcciones de X e Y será el mismo es decir, que estarán apuntando a la misma ubicación de memoria.
copia profunda: hace una copia de todos los miembros de X, asigna diferentes ubicaciones de memoria para Y y luego asigna los miembros copiados a Y para lograr una copia profunda. De esta manera, si x desaparece y sigue siendo válido en la memoria.,
el término correcto para usar sería clonación, donde sabes que ambos son totalmente iguales, pero sin embargo diferentes (es decir, almacenados como dos ubicaciones diferentes en el espacio de memoria).
considere este ejemplo:
var employeeDetailsOriginal = { name: 'Manjula', age: 25, Profession: 'Software Engineer' };
digamos que desea crear un duplicado de esto, de modo que incluso si cambia los valores originales, siempre puede volver al original.,
Puedo hacer esto:
var employeeDetailsDuplicate = employeeDetailsOriginal; //Shallow copy!
si cambiamos un valor:
employeeDetailsDuplicate.name = 'NameChanged';
Esta instrucción también cambiará el nombre de employeeDetailsOriginal, ya que tenemos una copia superficial, o una referencia a var employeeDetailsOriginal. Esto significa que también está perdiendo los datos originales.
pero, al crear una nueva variable mediante el uso de las propiedades de la variable original employeeDetailsOriginal, puede crear una copia profunda.
Ahora si cambia employeedetailsduplicar.,nombre, sólo afectará a los employeeDetailsDuplicate y no employeeDetailsOriginal
Esquematizado ejemplo
Entonces, ¿Cómo copiar objetos de JavaScript a la nueva variable NO por referencia?
Su única opción es clonar el objeto de alguna manera.
método javascript puro para clonar objetos en profundidad
Leave a Reply