"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Compreendendo a cópia profunda em JavaScript

Compreendendo a cópia profunda em JavaScript

Publicado em 01/11/2024
Navegar:953

JavaScript dispensa apresentações, é uma linguagem robusta e com muita versatilidade, mas se você já trabalhou com ela, provavelmente já notou algum comportamento incomum. Uma delas é como o JavaScript lida com cópias de variáveis, principalmente ao trabalhar com objetos. Neste artigo, exploraremos o conceito de cópia profunda e como isso nos ajuda a evitar problemas inesperados ao duplicar dados em nossos programas.

Quando fazemos uma cópia de uma variável, o JavaScript cria um novo espaço de memória e armazena o valor copiado lá; então a nova variável aponta para este novo espaço de memória. Por exemplo:


x = 5;
y = x;


y está apontando para um novo espaço de memória, que tem o mesmo valor que x, ou seja, 5 visualmente. seria algo assim:

Comprendiendo la copia profunda en JavaScript

O conceito acima se aplica apenas a valores primitivos, para objetos é diferente. Imagine que temos os dois objetos a seguir:


let a = {
    name: 'Rick',
    lastName: 'Sanchez',
};

let b = a;


No exemplo acima, b não tem seu próprio espaço de memória como poderíamos esperar; em vez disso, a está apontando para o espaço de memória onde a está armazenado.

Comprendiendo la copia profunda en JavaScript

Que problemas esse comportamento pode causar? Basicamente, se você alterar qualquer campo de a ou b, ambas as variáveis ​​serão alteradas. Execute o código a seguir e verifique você mesmo.


let a = {
    name: 'Rick',
    lastName: 'Sanchez',
};

let b = a;

b.name = 'Morty';

console.log('a: ', a); // a:  { name: 'Morty', lastName: 'Sanchez' }
console.log('b: ', b); // b:  { name: 'Morty', lastName: 'Sanchez' }


A solução para isso? Precisamos fazer uma cópia profunda para salvar o valor de a em um novo espaço de memória independente para o qual b aponta.


const b = JSON.parse(JSON.stringify(a));


Desta forma, estamos forçando o JavaScript a criar um novo espaço de memória alterando o formato de Object para JSON. Isso é feito usando o método stringify, então o JSON com seu próprio espaço de memória é convertido novamente em um Objeto com o método parse, para que ambas as variáveis ​​permaneçam totalmente independentes.

Esse comportamento estranho já aconteceu com você? Deixe-me saber nos comentários, ficarei feliz em ler você!

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/daniel1775/comprendiendo-la-copia-profunda-en-javascript-2oon?1 Se houver alguma infração, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3