61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
title: Object Freeze
 | 
						|
---
 | 
						|
## Object Freeze
 | 
						|
The `Object.freeze()` method freezes an object. A frozen object will *prevent you* from:
 | 
						|
 | 
						|
* Adding new properties to it
 | 
						|
* Removing existing proprerties from it
 | 
						|
* Changing the enumerability, configurability, or writeability of it's existing properties
 | 
						|
 | 
						|
### Syntax
 | 
						|
```javascript
 | 
						|
Object.freeze(obj)
 | 
						|
```
 | 
						|
 | 
						|
### Parameters
 | 
						|
`obj`
 | 
						|
* The object to freeze.
 | 
						|
 | 
						|
### Returns
 | 
						|
The frozen object.
 | 
						|
 | 
						|
### Important Note
 | 
						|
Attempting to add, remove, or modify properties of a frozen object will result in a failure. This failure will either be silent or a thrown `TypeError` (if Strict Mode is enabled). Additionally, `Object.freeze()` is a shallow operation. This means that nested object, of a frozen object, are modifiable.
 | 
						|
 | 
						|
### Example
 | 
						|
```javascript
 | 
						|
// Create your object
 | 
						|
let person = {
 | 
						|
  name: 'Johnny',
 | 
						|
  age: 23,
 | 
						|
  guild: 'Army of Darkness',
 | 
						|
  hobbies: ['music', 'gaming', 'rock climbing']
 | 
						|
}
 | 
						|
 | 
						|
// Modify your object
 | 
						|
person.name = 'John'
 | 
						|
person.age = 24
 | 
						|
person.hobbies.splice(1,1)
 | 
						|
delete person.guild
 | 
						|
 | 
						|
// Verify your object has been modified
 | 
						|
console.log(person) // { name: 'John', age: 24, hobbies: ['music', 'rock climbing']
 | 
						|
 | 
						|
// Freeze your object
 | 
						|
Object.freeze(person)
 | 
						|
 | 
						|
// Verify that your object can no longer be modified
 | 
						|
person.name = 'Johnny' // fails silently
 | 
						|
person.age = 23 // fails silently
 | 
						|
console.log(person) // { name: 'John', age: 24, hobbies: ['music', 'rock climbing']
 | 
						|
 | 
						|
// The freeze is "shallow" and nested objects (including arrays) can still be modified
 | 
						|
person.hobbies.push('basketball')
 | 
						|
consol.log(person.hobbies) // ['music', 'rock climbing', 'basketball']
 | 
						|
 | 
						|
```
 | 
						|
 | 
						|
#### More Information:
 | 
						|
[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze)
 |