O que é

Imutabilidade é um conceito importante, especialmente em programação funcional. Refere-se a objetos ou dados que não podem ser alterados após serem criados. Em vez de modificar o objeto ou dado original, você cria uma nova cópia com as alterações desejadas.

Como Funciona

Quando um objeto ou dado é imutável, ele permanece constante e inalterado durante toda a sua existência. Isso traz vários benefícios, como facilitar o rastreamento de mudanças no estado do programa e evitar efeitos colaterais indesejados.

Vantagens da Imutabilidade:

Imutabilidade é um conceito poderoso que contribui para um código mais robusto e de fácil manutenção.

Exemplo

  1. Imutabilidade com Arrays
const numeros = [1, 2, 3, 4, 5];

// Criando um novo array com um número adicionado, sem alterar o original
const novosNumeros = [...numeros, 6];

console.log(numeros) // [1, 2, 3, 4, 5];
console.log(novosNumeros); // [1, 2, 3, 4, 5, 6];
  1. Imutabilidade com Objetos
const pessoa = { nome: "DuH", idade: 29 }

// Criando um novo objeto com uma propriedade alterada, sem modificar o original
const novaPessoa = { ...pessoa, idade: 30 }

console.log(pessoa); // { nome: "DuH", idade: 29 }
console.log(novaPessoa); // {nome: "DuH", idade: 30 }

Shallow Copy

é uma cópia de um objeto que copia as referências dos elementos do objeto original para o novo objeto. Isso significa que, para objetos aninhados (objetos dentro de objetos), apenas as referências são copiadas, e não os objetos e si. Como resultado, se você modificar um objeto aninhado na cópia rasa, essa modificação também afetará o objeto original, pois ambos referenciam o mesmo objeto.

Como Funciona

Em JavaScript, um shallow copy poder ser criada usando métodos como Object.assign() para objetos ou o operador spread () para arrays e objetos.

Vantagens e Limitações da Shallow Copy