Criando objetos imutáveis no Javascript

Publicado em: 01/06/2020

Como você pode ter lido no nosso último post (Javascript - Um pouco sobre váriáveis), deixamos um gancho no final do post sobre como podemos criar objetos cujo as propriedades sejam totalmente imutáveis, visto que mesmo declarando um objeto com o const ainda assim podemos acessar suas propriedades livremente e modificá-las.

Usando o Object.freeze()

É tão simples quando possa parecer:

  // Aqui envolvemos o nosso objeto no Object.freeze
  const ficha = Object.freeze({
    nome: 'gughog',
    classe: 'Dark Mage',
    level: 2,
    gold: 345
  })

  // vamos roubar um pouco e deixar nossa ficha com level máximo
  // e muito gold:
  ficha.level = 99
  ficha.gold = 8000

  console.log(ficha)
  // resultado: 
  
  // {
  //   nome: 'gughog',
  //   classe: 'Dark Mage',
  //   level: 2,
  //   gold: 345
  // }
  
  // e... nada mudou!

O que exatamente esse método faz

O Object.freeze() literalmente congela um objeto, como seu nome diz, e impede que qualquer coisa seja alterada, adicionada ou removida. Uma vez congelado será assim até o fim, efetivamente tornando-o imutável.

Obrigado pela leitura e até o próximo post!