JavaScript Object.freeze


Ejemplo

5

Object.freeze hace que un objeto sea inmutable al evitar la adición de nuevas propiedades, la eliminación de propiedades existentes y la modificación de la enumerabilidad, la capacidad de configuración y la capacidad de escritura de las propiedades existentes. También evita que se modifique el valor de las propiedades existentes. Sin embargo, no funciona de forma recursiva, lo que significa que los objetos secundarios no se congelan automáticamente y están sujetos a cambios.

Las operaciones que siguen a la congelación fallarán silenciosamente a menos que el código se ejecute en modo estricto. Si el código está en modo estricto, se lanzará 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';