O método JavaScript Object.freeze () congela um objeto.
Um objeto congelado não pode mais ser alterado. Congelar um objeto evita:
- Novas propriedades sendo adicionadas ao objeto.
- Propriedades existentes a serem removidas do objeto.
- Alterar a enumerabilidade, configurabilidade ou capacidade de escrita das propriedades existentes.
- Alteração de valores das propriedades e protótipos do objeto existente.
A sintaxe do freeze()
método é:
Object.freeze(obj)
O freeze()
método, sendo um método estático, é chamado usando o Object
nome da classe.
Parâmetros freeze ()
O freeze()
método inclui:
- obj - O objeto a congelar.
Valor de retorno de congelar ()
- O objeto que foi passado para a função.
Notas :
- Qualquer tentativa de adicionar ou remover do conjunto de propriedades de objetos congelados falhará silenciosamente ou lançará
TypeError
(principalmente quando no modo estrito). - Objetos selados com
Object.seal()
podem ter suas propriedades existentes alteradas enquantoObject.freeze()
torna as propriedades existentes imutáveis.
Exemplo: usando freeze ()
let obj = ( prop: function () (), foo: "bar", ); let o = Object.freeze(obj); console.log(o == obj); // True -> Returns the same object console.log(Object.isFrozen(obj)); // true // changes will fail silently obj.foo = "bar1"; console.log(obj.foo); // bar // does not add silently obj.new_foo = "bar"; console.log(obj.new_foo); // undefined // Following will also throw error // Object.setPrototypeOf(obj, ( x: 20 ))
Resultado
true true bar indefinido
Nota : Object.freeze(obj)
aplica-se apenas às propriedades imediatas de obj
. Se o valor dessas propriedades são os próprios objetos, esses objetos não são congelados e podem ser o alvo de operações de adição, remoção ou reatribuição de valor.
Leitura recomendada: selo de objeto JavaScript ()