JavaScript Object.freeze


Esempio

5

Object.freeze rende un oggetto immutabile impedendo l'aggiunta di nuove proprietà, la rimozione di proprietà esistenti e la modifica dell'enumerabilità, della configurabilità e della scrittura delle proprietà esistenti. Inoltre impedisce che il valore delle proprietà esistenti venga modificato. Tuttavia, non funziona in modo ricorsivo, il che significa che gli oggetti figlio non vengono automaticamente congelati e sono soggetti a modifiche.

Le operazioni successive al freeze falliranno silenziosamente a meno che il codice non sia in esecuzione in modalità rigorosa. Se il codice è in modalità rigorosa, verrà generato un TypeError .

var obj = {
  foo: 'foo',
  bar: [1, 2, 3],
  baz: {
    foo: 'nested-foo'
  }
};

Object.freeze(obj);

// Cannot add new properties
obj.newProperty = true;

// Cannot modify existing values or their descriptors
obj.foo = 'not foo';
Object.defineProperty(obj, 'foo', {
    writable: true
});

// Cannot delete existing properties
delete obj.foo;

// Nested objects are not frozen
obj.bar.push(4);
obj.baz.foo = 'new foo';