How to prevent modification of object in JavaScript ?.

JavaScript provides three methods to prevent modification of objects at different levels of restriction. These protective measures ensure that objects cannot be accidentally or intentionally altered, maintaining code integrity and predictable behavior.

Three Levels of Object Protection

1) Prevent Extensions

Object.preventExtensions() prevents new properties from being added to an object, but existing properties can still be modified or deleted.

Example

<html>
<body>
<script>
   var object1 = {
      prop1: 1
   };
   Object.preventExtensions(object1);
   
   delete object1.prop1; // deletion allowed
   
   try {
      Object.defineProperty(object1, 'prop2', {
         value: 2
      });
   } catch (err) {
      document.write(err);
   }
   document.write("<br>");
   document.write(object1.prop1);
</script>
</body>
</html>

Output

TypeError: Cannot define property prop2, object is not extensible
undefined

2) Seal

Object.seal() prevents extensions and deletion of existing properties, but allows modification of existing property values.

Example

<html>
<body>
<script>
   var object1 = {
      prop1: 1
   };
   Object.seal(object1);
   
   object1.prop1 = 2;    // modification allowed
   delete object1.prop1; // deletion prevented
   
   try {
      Object.defineProperty(object1, 'prop2', {
         value: 2
      });
   } catch (err) {
      document.write(err);
   }
   document.write("<br>");
   document.write(object1.prop1);
</script>
</body>
</html>

Output

TypeError: Cannot define property prop2, object is not extensible
2

3) Freeze

Object.freeze() provides the highest level of protection. It prevents extensions, deletions, and modifications of existing properties, making the object completely immutable.

Example

<html>
<body>
<script>
   var object1 = {
      prop1: 1
   };
   Object.freeze(object1);
   
   object1.prop1 = 2;    // modification prevented
   delete object1.prop1; // deletion prevented
   
   try {
      Object.defineProperty(object1, 'prop2', {
         value: 2
      });
   } catch (err) {
      document.write(err);
   }
   document.write("<br>");
   document.write(object1.prop1);
</script>
</body>
</html>

Output

TypeError: Cannot define property prop2, object is not extensible
1

Comparison Table

Method Add Properties Delete Properties Modify Values
Object.preventExtensions() ? No ? Yes ? Yes
Object.seal() ? No ? No ? Yes
Object.freeze() ? No ? No ? No

Conclusion

Use Object.freeze() for complete immutability, Object.seal() when you need to modify existing values, and Object.preventExtensions() for the most flexible protection level.

Updated on: 2026-03-15T23:18:59+05:30

471 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements