Object.seal Function (JavaScript)
[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]
Prevents the modification of attributes of existing properties, and prevents the addition of new properties.
Object.seal(object)
The Object.seal function does both of the following:
-
Makes the object non-extensible, so that new properties cannot be added to it.
-
Sets the configurable attribute to false for all properties of the object.
When the configurable attribute is false, property attributes cannot be changed and the property cannot be deleted. When configurable is false and writable is true, the value and writable attributes can be changed.
The Object.seal function does not change the writable attribute.
For more information about how to set property attributes, see Object.defineProperty Function (JavaScript). To obtain the attributes of a property, you can use the Object.getOwnPropertyDescriptor Function (JavaScript).
Related Functions
The following related functions prevent the modification of object attributes.
|
Function |
Object is made non-extensible |
configurable is set to false for each property |
writable is set to false for each property |
|---|---|---|---|
|
Yes |
No |
No |
|
|
Object.seal |
Yes |
Yes |
No |
|
Yes |
Yes |
Yes |
The following functions return true if all of the conditions marked in the following table are true.
|
Function |
Object is extensible? |
Object is non-extensible? |
configurable is false for all properties? |
writable is false for all data properties? |
|---|---|---|---|---|
|
X |
|
|
|
|
|
|
X |
X |
|
|
|
|
X |
X |
X |
The following example illustrates the use of the Object.seal function.
function showSeal() { // Create an object that has two properties. var obj = { pasta: "spaghetti", length: 10 }; // Show attributes of the object and its properties. showAttributes(obj); // Seal the object. Object.seal(obj); // Show the attributes again. showAttributes(obj); // Try to add a new property, and then verify that it is // not added. It is not added because Object.seal makes the // object non-extensible. obj.newProp = 50; document.write(typeof (obj.newProp) === "undefined"); document.write(" "); // Try to delete a property, and then verify that it is // still present. It is not deleted because Object.seal sets // the configurable attribute of the property to false. delete obj.length; document.write(obj.length === 10); } function showAttributes(obj) { var newLine = "<br />"; // Show attributes of the object. document.write("non-extensible: " + !Object.isExtensible(obj)); document.write(", isSealed: " + Object.isSealed(obj)); document.write(", isFrozen: " + Object.isFrozen(obj)); document.write(newLine); // Show attributes of each property. for (var prop in obj) { var descriptor = Object.getOwnPropertyDescriptor(obj, prop); document.write(prop + " - "); document.write("configurable: " + descriptor.configurable); document.write(", writable: " + descriptor.writable); document.write(newLine); } document.write(newLine); }
The following is the output.
non-extensible: false, isSealed: false, isFrozen: false pasta - configurable: true, writable: true length - configurable: true, writable: true non-extensible: true, isSealed: true, isFrozen: false pasta - configurable: false, writable: true length - configurable: false, writable: true true true
Supported in the following document modes: Internet Explorer 9 standards and Internet Explorer 10 standards. Also supported in Metro style apps. See Version Information.
Not supported in the following document modes: Quirks, Internet Explorer 6 standards, Internet Explorer 7 standards, Internet Explorer 8 standards.