The Object.freeze()
method freezes an object i.e. it prevents the object from being modified.
Example
let obj = {
prop: function () {},
foo: "bar",
};
// freeze the object
Object.freeze(obj)
// changes will not occur
obj.foo = "bar1";
console.log(obj.foo);
// Output: bar
freeze() Syntax
The syntax of the freeze()
method is:
Object.freeze(obj)
Here, freeze()
is a static method. Hence, we need to access the method using the class name, Object
.
Notes: A frozen object can no longer be changed. Freezing an object prevents:
- New properties from being added to the object.
- Existing properties to be removed from the object.
- Changing the enumerability, configurability, or writability of existing properties.
- Changing the values of existing object properties and prototypes.
freeze() Parameters
The freeze()
method takes in:
- obj - the object to freeze.
freeze() Return Value
The freeze()
method returns:
- The object that was passed to the function.
Notes:
- Any attempt to add or remove from the property set of frozen objects will either fail silently or the program will throw
TypeError
(mostly when in strict mode). - Objects sealed with
Object.seal()
can have their existing properties changed whileObject.freeze()
makes the existing properties immutable.
Example: JavaScript Object.freeze()
let obj = {
prop: function () {},
foo: "bar",
};
// freeze the obj object
let o = Object.freeze(obj);
// changes will fail silently
obj.foo = "bar1";
console.log(obj.foo);
// cannot add a new property
obj.new_foo = "bar";
console.log(obj.new_foo);
Output
bar undefined
In the above example, we have created an object obj with two properties: prop and foo.
We then used the Object.freeze()
method to freeze obj, which makes it immutable. Once an object is frozen, its properties cannot be modified or deleted.
The output indicates that any attempt to modify a property or add a new property on a frozen object will fail silently without throwing an error.
Note: Object.freeze(obj)
only applies to the immediate properties of obj. If the values of those properties are objects themselves, those objects are not frozen and may be the target of property addition, removal, or value reassignment operations.
Recommended Reading: