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