Cuando se trabaja con JavaScript, comprender la diferencia entre copia superficial y copia profunda es esencial para una manipulación eficaz de objetos y matrices. Profundicemos en lo que significan estos términos y cómo implementar cada tipo de copia en tu código.
Copia superficial
Una copia superficial crea un nuevo objeto o matriz que contiene los mismos valores que el original. Sin embargo, si el original contiene objetos o matrices anidados, la copia superficial solo copia las referencias a estas estructuras anidadas, no las estructuras en sí. Esto significa que los cambios en los objetos o matrices anidados en la estructura copiada también afectarán al original.
Ejemplos de métodos de copia superficial:
const original = { a: 1, b: { c: 2 } }; const shallowCopy = { ...original };
Aquí, copia superficial es un objeto nuevo, pero copia superficial.b todavía hace referencia al mismo objeto que original.b.
2.Objeto.asignar()
const shallowCopy = Object.assign({}, original);
const originalArray = [1, 2, 3]; const shallowCopyArray = originalArray.slice();
Copia profunda
Una copia profunda crea un nuevo objeto o matriz que es un clon completo e independiente del original, incluidos todos los objetos y matrices anidados. Los cambios en la copia profunda no afectan el original y viceversa.
Ejemplos de métodos de copia profunda:
const original = { a: 1, b: { c: 2 } }; const deepCopy = JSON.parse(JSON.stringify(original));
Este método serializa el objeto en una cadena JSON y luego lo analiza nuevamente en un nuevo objeto. Sin embargo, no maneja funciones, referencias circulares o indefinidas.
2.Función recursiva
function deepCopy(obj) { if (obj === null || typeof obj !== 'object') return obj; const copy = Array.isArray(obj) ? [] : {}; for (let key in obj) { if (obj.hasOwnProperty(key)) { copy[key] = deepCopy(obj[key]); } } return copy; }
const deepCopy = structuredClone(original);
Cuándo usar cada uno
Copia superficial: Adecuado para objetos simples o matrices sin estructuras anidadas. Es más rápido y utiliza menos memoria. Úselo cuando necesite una copia rápida donde los cambios en los objetos anidados se reflejen tanto en el original como en la copia.
Copia profunda: Necesaria para objetos complejos o matrices con estructuras anidadas. Garantiza que los cambios en la copia no afecten al original. Úselo cuando necesite clones completamente independientes.
Comprender estas diferencias ayuda a prevenir errores que surgen de referencias compartidas no deseadas y garantiza la integridad de los datos en sus aplicaciones
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3