Preventing modification of Objects

There are many ways to lock an object according to your needs.

  1. Object.freeze()
  2. Object.seal()
  3. Object.preventExtensions()

Object.freeze()

To prevent modification of JavaScript objects, one of the techniques is to use Object.freeze() . Freezing an object does not allow new properties to be added to an object and prevents from removing or altering the existing properties. Any attempt to do so will fail, either silently or by throwing a TypeError exception (most commonly, but not exclusively, when in strict mode). Syntax
Object.freeze(obj)
example
var student = { name: "John", age: 10 }; Object.freeze(student); student.grade = 2; // Throws an error in strict mode document.write(student.grade); //undefined document.write("<br/>"); delete student.age; //delete property document.write(student.age); document.write("<br/>"); student.name = "Doe"; document.write(student.name);
output
undefined 10 John
Freezing an object can be useful for representing a logically immutable data structure , especially if changing the properties of the object could lead to bad behaviour elsewhere in your application. Object.freeze(…) is shallow, this means that object values in a frozen object are still mutable.

Object.seal()

Object.seal is a superset of Object.preventExtensions in functionality in that while it prevents tacking on of arbitrary properties to objects it also prevents altering the attributes of the properties that already exist on the object. Also, it disallows deleting properties . Syntax
Object.seal(obj)
example
var student = { name: "John", age: 10 }; Object.seal(student); student.grade = 2; //add new property document.write(student.grade); //undefined document.write("<br/>"); student.name = "Doe"; document.write(student.name); document.write("<br/>"); //Doe delete student.age; document.write(student.age); // 10 document.write("<br/>");
output
undefined Doe 10

Object.preventExtensions()

Object.preventExtensions() sets the extensible attribute of o to false so that no new properties can be added to it. This is a permanent change: once an object has been made non-extensible, it cannot be make extensible again. example
var student = { name: "John", age: 10 }; Object.preventExtensions(student); document.write(Object.isExtensible(student)); document.write("<br/>"); student.grade = 2; //add new property document.write(student.grade); //undefined document.write("<br/>");
output
false undefined