75 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: With
 | ||
| localeTitle: С
 | ||
| ---
 | ||
| ## С
 | ||
| 
 | ||
| Оператор JavaScript `with` выражением является сокращенным способом редактирования нескольких свойств на одном объекте. Большинство разработчиков отговорить использование `with` , и вы лучше не использовать это ключевое слово.
 | ||
| 
 | ||
| **Примечание** : `"strict mode"` запрещает использование `with` .
 | ||
| 
 | ||
| ### Синтаксис
 | ||
| 
 | ||
| ```syntax
 | ||
| with (expression) 
 | ||
|   statement 
 | ||
| ```
 | ||
| 
 | ||
| ### Пример использования
 | ||
| 
 | ||
| В JavaScript вы можете индивидуально изменять свойства объекта, как показано ниже:
 | ||
| 
 | ||
| ```javascript
 | ||
| let earth = {}; 
 | ||
|  earth.moons = 1; 
 | ||
|  earth.continents = 7; 
 | ||
| ```
 | ||
| 
 | ||
| `with` дает вам стенографию для изменения свойств объекта:
 | ||
| 
 | ||
| ```javascript
 | ||
| with (earth) { 
 | ||
|   moons = 1; 
 | ||
|   continents = 7; 
 | ||
|  } 
 | ||
| ```
 | ||
| 
 | ||
| Хотя этот пример надуман, вы можете понять примеры использования `with` большим количеством, если у вас есть более крупные объекты, например:
 | ||
| 
 | ||
| ```javascript
 | ||
| earth.continents.australia.geography.ocean = "Pacific"; 
 | ||
|  earth.continents.australia.geography.river = "Murray"; 
 | ||
|  earth.continents.australia.geography.mountain = "Kosciuszko"; 
 | ||
| ```
 | ||
| 
 | ||
| ### альтернативы
 | ||
| 
 | ||
| Вы не должны использовать `with` , как это имеет тонкие ошибки и проблемы совместимости. Очень рекомендуемый подход - назначить объект переменной, а затем изменить свойства переменной. Вот пример использования более крупного объекта:
 | ||
| 
 | ||
| ```javascript
 | ||
| let earth = { 
 | ||
|   continents: { 
 | ||
|     australia: { 
 | ||
|       geography: {} 
 | ||
|     } 
 | ||
|   } 
 | ||
|  }; 
 | ||
|  
 | ||
|  let geo = earth.continents.australia.geography; 
 | ||
|  
 | ||
|  geo.ocean = "Pacific"; 
 | ||
|  geo.river = "Murray"; 
 | ||
|  geo.mountain = "Kosciuszko"; 
 | ||
| ```
 | ||
| 
 | ||
| ### Попробовать
 | ||
| 
 | ||
| https://repl.it/Mixg/5
 | ||
| 
 | ||
| #### Дополнительная информация:
 | ||
| 
 | ||
| [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with)
 | ||
| 
 | ||
| [https://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/](https://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/)
 | ||
| 
 | ||
| [http://2ality.com/2011/06/with-statement.html](http://2ality.com/2011/06/with-statement.html) |