protection
Object.isSealed
Returns true if the object is sealed — non-extensible and all own properties are non-configurable. Frozen objects are always sealed; primitives are considered sealed.
Object.isSealed(obj) Parameters
| Parameter | Purpose |
|---|---|
| obj | The value to test |
| returns | Boolean — true if sealed |
Examples
console.log(Object.isSealed({})); Logs false
console.log(Object.isSealed(Object.seal({ a: 1 }))); Logs true
console.log(Object.isSealed(Object.freeze({ a: 1 }))); Logs true — every frozen object is also sealed
console.log(Object.isSealed('hello')); Logs true — primitives are trivially sealed
Gotcha
A sealed object may still be writable — check with isFrozen if you also need immutability of values. Empty non-extensible objects are automatically sealed.
Related methods
Object.seal
Seals an object: prevents new properties from being added and marks all existing properties as non-configurable. Existing writable properties can still be reassigned.
Object.isFrozen
Returns true if the object is frozen — non-extensible, and every own property is non-configurable and (if a data property) non-writable. Primitives are considered frozen.
Object.isExtensible
Returns true if new properties can be added to the object. Sealed, frozen, and preventExtensions'd objects all return false; primitives always return false.
Object.freeze
Freezes an object: new properties cannot be added, existing properties cannot be removed, and their values, writability, and configurability cannot be changed. Returns the same object.
Object.preventExtensions
Prevents new properties from being added to an object, but existing properties can still be modified, deleted, or reconfigured. The weakest of the three protection levels.