Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
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.
