Seguro que esto te ha ocurrido en más de una ocasión en JavaScript:
- Tienes un objeto en una variable.
- Copias esa variable en otra.
- Modificas la nueva variable.
- ¡Se te ha cambiado también la variable original!
Podemos verlo en un ejemplo:
let persona1 = {
nombre: 'Gorka'
};
let persona2 = persona1;
persona2.nombre = 'Juan';
console.log(persona1.nombre);
El resultado de este script será «Juan» en lugar de «Gorka» ¡se ha modificado la variable persona1 al modificar persona2!
El «problema» que estamos sufriendo se debe a que al copiar una variable objeto en realidad copiamos una referencia al objeto. Es decir, que ambas variables «apuntan» al mismo objeto.
¿La solución? Próximamente…