mozilla
Your Search Results

    Object.isSealed()

    Summary

    The Object.isSealed() method determines if an object is sealed.

    Syntax

    Object.isSealed(obj)

    Parameters

    obj
    The object which should be checked.

    Description

    Returns true if the object is sealed, otherwise false. An object is sealed if it is not extensible and if all its properties are non-configurable and therefore not removable (but not necessarily non-writable).

    Examples

    // Objects aren't sealed by default.
    var empty = {};
    assert(Object.isSealed(empty) === false);
    
    // If you make an empty object non-extensible, it is vacuously sealed.
    Object.preventExtensions(empty);
    assert(Object.isSealed(empty) === true);
    
    // The same is not true of a non-empty object, unless its properties are all non-configurable.
    var hasProp = { fee: 'fie foe fum' };
    Object.preventExtensions(hasProp);
    assert(Object.isSealed(hasProp) === false);
    
    // But make them all non-configurable and the object becomes sealed.
    Object.defineProperty(hasProp, 'fee', { configurable: false });
    assert(Object.isSealed(hasProp) === true);
    
    // The easiest way to seal an object, of course, is Object.seal.
    var sealed = {};
    Object.seal(sealed);
    assert(Object.isSealed(sealed) === true);
    
    // A sealed object is, by definition, non-extensible.
    assert(Object.isExtensible(sealed) === false);
    
    // A sealed object might be frozen, but it doesn't have to be.
    assert(Object.isFrozen(sealed) === true); // all properties also non-writable
    
    var s2 = Object.seal({ p: 3 });
    assert(Object.isFrozen(s2) === false); // 'p' is still writable
    
    var s3 = Object.seal({ get p() { return 0; } });
    assert(Object.isFrozen(s3) === true); // only configurability matters for accessor properties
    

    Notes

    In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true.

    > Object.isSealed(1)
    TypeError: 1 is not an object // ES5 code
    
    > Object.isSealed(1)
    true                          // ES6 code
    

    Specifications

    Specification Status Comment
    ECMAScript 5.1 (ECMA-262)
    The definition of 'Object.isSealed' in that specification.
    Standard Initial definition. Implemented in JavaScript 1.8.5.
    ECMAScript 6 (ECMA-262)
    The definition of 'Object.isSealed' in that specification.
    Release Candidate  

    Browser compatibility

    Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Basic support 6 4.0 (2.0) 9 12 5.1
    Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Basic support ? ? ? ? ? ?

    Based on Kangax's compat table.

    See also

    Document Tags and Contributors

    Last updated by: claudepache,