75 lines
2.0 KiB
Markdown
75 lines
2.0 KiB
Markdown
|
---
|
||
|
title: With
|
||
|
localeTitle: Com
|
||
|
---
|
||
|
## Com
|
||
|
|
||
|
JavaScript `with` instrução é uma forma abreviada de editar várias propriedades em um objeto. A maioria dos desenvolvedores desencorajar o uso de `with` , e você é melhor não usar esta palavra-chave.
|
||
|
|
||
|
**Nota** : `"strict mode"` proíbe o uso de `with` .
|
||
|
|
||
|
### Sintaxe
|
||
|
|
||
|
```syntax
|
||
|
with (expression)
|
||
|
statement
|
||
|
```
|
||
|
|
||
|
### Exemplo de uso
|
||
|
|
||
|
Em JavaScript, você pode modificar individualmente as propriedades de um objeto, como abaixo:
|
||
|
|
||
|
```javascript
|
||
|
let earth = {};
|
||
|
earth.moons = 1;
|
||
|
earth.continents = 7;
|
||
|
```
|
||
|
|
||
|
`with` lhe dá uma abreviação para modificar as propriedades em um objeto:
|
||
|
|
||
|
```javascript
|
||
|
with (earth) {
|
||
|
moons = 1;
|
||
|
continents = 7;
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Enquanto este exemplo é inventado, você pode entender casos de uso `with` mais se você tiver objetos maiores como abaixo:
|
||
|
|
||
|
```javascript
|
||
|
earth.continents.australia.geography.ocean = "Pacific";
|
||
|
earth.continents.australia.geography.river = "Murray";
|
||
|
earth.continents.australia.geography.mountain = "Kosciuszko";
|
||
|
```
|
||
|
|
||
|
### Alternativas
|
||
|
|
||
|
Você não deve usar `with` , pois tem erros sutis e problemas de compatibilidade. Uma abordagem altamente recomendada é atribuir o objeto a uma variável e, em seguida, modificar as propriedades da variável. Aqui está um exemplo usando um objeto maior:
|
||
|
|
||
|
```javascript
|
||
|
let earth = {
|
||
|
continents: {
|
||
|
australia: {
|
||
|
geography: {}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
let geo = earth.continents.australia.geography;
|
||
|
|
||
|
geo.ocean = "Pacific";
|
||
|
geo.river = "Murray";
|
||
|
geo.mountain = "Kosciuszko";
|
||
|
```
|
||
|
|
||
|
### Experimente
|
||
|
|
||
|
https://repl.it/Mixg/5
|
||
|
|
||
|
#### Mais Informações:
|
||
|
|
||
|
[https://developer.mozilla.org/pt-BR/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)
|