JavaScript Object.seal


Esempio

5

Object.seal impedisce l'aggiunta o la rimozione di proprietà da un oggetto. Una volta che un oggetto è stato sigillato, i suoi descrittori di proprietà non possono essere convertiti in un altro tipo. A differenza di Object.freeze , consente di modificare le proprietà.

I tentativi di eseguire queste operazioni su un oggetto sigillato falliranno silenziosamente

var obj = { foo: 'foo', bar: function () { return 'bar'; } };

Object.seal(obj)

obj.newFoo = 'newFoo';
obj.bar = function () { return 'foo' };

obj.newFoo; // undefined
obj.bar(); // 'foo'

// Can't make foo an accessor property
Object.defineProperty(obj, 'foo', { 
    get: function () { return 'newFoo'; }
}); // TypeError

// But you can make it read only
Object.defineProperty(obj, 'foo', { 
    writable: false
}); // TypeError

obj.foo = 'newFoo';
obj.foo; // 'foo';

In modalità rigorosa queste operazioni generano un TypeError

(function () {
    'use strict';

    var obj = { foo: 'foo' };

    Object.seal(obj);

    obj.newFoo = 'newFoo'; // TypeError
}());