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()


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
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/>"); = "Doe"; document.write(;
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 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
var student = { name: "John", age: 10 }; Object.seal(student); student.grade = 2; //add new property document.write(student.grade); //undefined document.write("<br/>"); = "Doe"; document.write(; document.write("<br/>"); //Doe delete student.age; document.write(student.age); // 10 document.write("<br/>");
undefined Doe 10


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/>");
false undefined