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