JavaScript Object.freeze


Exemple

5

Object.freeze rend un objet immuable en empêchant l'ajout de nouvelles propriétés, la suppression de propriétés existantes et la modification de l'énumérabilité, de la configurabilité et de la facilité d'écriture des propriétés existantes. Cela empêche également la modification des propriétés existantes. Cependant, cela ne fonctionne pas de manière récursive, ce qui signifie que les objets enfants ne sont pas automatiquement gelés et sont sujets à modification.

Les opérations qui suivent le gel échoueront silencieusement, à moins que le code ne s'exécute en mode strict. Si le code est en mode strict, une TypeError sera lancée.

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';