Skip to content

Commit f8e5c3a

Browse files
committed
fix(property-descriptors): some translations adjusts
1 parent 545af57 commit f8e5c3a

File tree

1 file changed

+23
-22
lines changed
  • 1-js/07-object-properties/01-property-descriptors

1 file changed

+23
-22
lines changed

1-js/07-object-properties/01-property-descriptors/article.md

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11

2-
# Sinalizadores e descritores de propriedade
2+
# Sinalizadores e descritores de propriedades
33

44
Como sabemos, objetos podem armazenar propriedades.
55

66
Até agora, para nós, uma propriedade era um simples par "chave-valor". Mas uma propriedade de objeto é na verdade uma coisa mais flexível e poderosa.
77

8-
Neste capítulo, nós vamos estudar opções de configuração adicional, e no próximo nós vamos ver como invisivelmente tornar elas em funções getter/setter.
8+
Neste capítulo, nós vamos estudar opções de configurações adicionais, e no próximo nós vamos ver como invisivelmente tornar elas em funções getter/setter.
99

1010
## Sinalizadores de propriedade
1111

12-
Propriedades de objeto, além do **`valor`** tem três atributos especiais (também chamados "sinalizadores"):
12+
Propriedades de objeto, além do **`valor`** têm três atributos especiais (também chamados "sinalizadores"):
1313

1414
- **`gravável`** -- se `true`, o valor pode ser alterado, caso contrário, é apenas-leitura.
1515
- **`enúmeravel`** -- se `true`, então pode ser listado em loops, caso contrário, não pode.
@@ -63,14 +63,14 @@ Object.defineProperty(obj, propertyName, descriptor)
6363
```
6464

6565
`obj`, `propertyName`
66-
: O objeto e a propriedade nos quais atuar.
66+
: O objeto e a propriedade nos quais atuar.
6767

6868
`descriptor`
6969
: Descritor de propriedade de objeto a aplicar.
7070

71-
Se a proprieade existe, `defineProperty` atualiza seu sinalizador. Caso contrário, é criada uma propriedade com os sinalizadores setados; neste caso, se um sinalizador não é enviado, seu valor é assumido como `false`.
71+
Se a proprieade existe, `defineProperty` atualiza o seu sinalizador. Caso contrário, é criada uma propriedade com os sinalizadores e valor dados; neste caso, se um sinalizador não é fornecido, seu valor é assumido como `false`.
7272

73-
Por exemplo, aqui a propriedade `name` é criada com todos os sinalizadores falsos:
73+
Por exemplo, aqui a propriedade `name` é criada com todos os sinalizadores a falso:
7474

7575
```js run
7676
let user = {};
@@ -96,7 +96,7 @@ alert( JSON.stringify(descriptor, null, 2 ) );
9696
*/
9797
```
9898

99-
Compare isso com o `user.name` "criado normalmente" acima: agora todos os sinalizadores são falsos. Se não é isso que queremos, então é melhor setá-los como `true` no `descriptor`.
99+
Compare isso com o `user.name` "criado normalmente" acima: agora todos os sinalizadores são falsos. Se não é isso que queremos, então é melhor configurá-los como `true` no `descriptor`.
100100

101101
Agora vamos ver os efeitos dos sinalizadores, por exemplo:
102102

@@ -116,14 +116,15 @@ Object.defineProperty(user, "name", {
116116
});
117117

118118
*!*
119-
user.name = "Pete"; // Error: Cannot assign to read only property 'name'...
119+
user.name = "Pete";
120+
// Error: Cannot assign to read only property 'name'... (Erro: não é possível a atribuição à variável de apenas leitura 'name'...)
120121
*/!*
121122
```
122123

123124
Agora, ninguém pode alterar o nome do nosso usuário, a não ser que eles apliquem seus próprios `defineProperty` para sobrescrever o nosso.
124125

125126
```smart header="Erros aparecem apenas em strict mode"
126-
No modo não-estrito, os erros não ocorrem quando gravando em propriedades não-graváveis, etc. Mas a operação ainda não terá sucesso. Ações que violam os sinalizadores são apenas ignoradas silenciosamentes em modo não-estrito.
127+
No modo não-estrito, os erros não ocorrem quando escrevendo em propriedades não-graváveis, etc. Mas a operação ainda assim não terá sucesso. Ações que violam os sinalizadores são apenas ignoradas silenciosamentes em modo não-estrito.
127128
```
128129

129130
Aqui está o mesmo exemplo, mas a propriedade é criada do zero.
@@ -134,7 +135,7 @@ let user = { };
134135
Object.defineProperty(user, "name", {
135136
*!*
136137
value: "John",
137-
// para novas proprieades, precisamos explicitamente listar o que é true
138+
// para novas proprieades, precisamos explicitamente de listar o que é true
138139
enumerable: true,
139140
configurable: true
140141
*/!*
@@ -148,7 +149,7 @@ user.name = "Alice"; // Erro
148149

149150
Agora, vamos adicionar um `toString` customizado ao `user`.
150151

151-
Normalmente, um `toString` embutido em objetos é não-enumerável, e não aparece em `for...in`. Mas se nós adicionarmos um `toString` por nós mesmos, então por padrão ele aparece em `for...in`, desta forma:
152+
Normalmente, um `toString` embutido em objetos é não-enumerável, e não aparece em `for..in`. Mas se nós adicionarmos um `toString` por nós mesmos, então por padrão ele aparece em `for..in`, desta forma:
152153

153154
```js run
154155
let user = {
@@ -162,7 +163,7 @@ let user = {
162163
for (let key in user) alert(key); // name, toString
163164
```
164165

165-
Se nós não gostarmos disso, então podemos setar `enumerable:false`. Então ela não vai aparecer no loop `for...in`, assim como as propriedades embutidas:
166+
Se nós não gostarmos disso, então podemos configurar `enumerable:false`. Então ela não vai aparecer no loop `for..in`, tal como as propriedades embutidas:
166167

167168
```js run
168169
let user = {
@@ -192,7 +193,7 @@ alert(Object.keys(user)); // name
192193

193194
## Não-configurável
194195

195-
O sinalizador não-configurável (`configurable:false`) algumas vezes é predefinido por objetos e propriedades embutidas.
196+
O sinalizador não-configurável (`configurable:false`) algumas vezes está predefinido para objetos e propriedades embutidas.
196197

197198
Uma propriedade não-configurável não pode ser deletada.
198199

@@ -221,13 +222,13 @@ Math.PI = 3; // Erro
221222

222223
Deixar uma propriedade não-configurável, é um caminho só de ida. Nós não podemos alterar isso novamente com `defineProperty`.
223224

224-
Para ser preciso, não-configurabilidade impões várias restrições em `defineProperty`:
225+
Para ser preciso, a não-configurabilidade impões várias restrições a `defineProperty`:
225226
1. Não poder mudar o sinalizador `configurable`.
226-
1. Não poder mudar o sinalizador `enumerable`.
227+
2. Não poder mudar o sinalizador `enumerable`.
227228
3. Não poder mudar `writable: false` para `true` (o contrário funciona).
228229
4. Não poder mudar `get/set` por um acessador de propriedade (mas pode atribuí-los se ausente).
229230

230-
**A ideia de "configurable: false" é para prevenir mudanças de sinalizadores de propriedades e sua eliminação, enquanto permite alterar seu valor.**
231+
**A ideia de "configurable: false" é para prevenir a mudança de sinalizadores de propriedades e a sua eliminação, enquanto permite alterar o seu valor.**
231232

232233
Aqui `user.name` é não-configurável, mas nós ainda podemos alterá-lo (pois é gravável):
233234

@@ -256,7 +257,7 @@ Object.defineProperty(user, "name", {
256257
configurable: false
257258
});
258259

259-
// não será possível alterar user.name ou seus sinalizadores
260+
// não será possível alterar user.name ou os seus sinalizadores
260261
// nada disso irá funcionar
261262
user.name = "Pete";
262263
delete user.name;
@@ -288,13 +289,13 @@ Object.defineProperties(user, {
288289
});
289290
```
290291

291-
Então, nós podemos setar várias propriedades de uma vez.
292+
Então, nós podemos configurar várias propriedades de uma vez.
292293

293294
## Object.getOwnPropertyDescriptors
294295

295296
Para obter todos os sinalizadores de propriedade de uma vez, nós podemos usar o método [Object.getOwnPropertyDescriptors(obj)](mdn:js/Object/getOwnPropertyDescriptors).
296297

297-
Juntamente com `Object.defineProperties` isso pode ser usado como um jeito "consciente-de-sinalizadores" de clonar objetos:
298+
Juntamente com `Object.defineProperties` isso pode ser usado como um jeito "incluindo-sinalizadores" de clonar objetos:
298299

299300
```js
300301
let clone = Object.defineProperties({}, Object.getOwnPropertyDescriptors(obj));
@@ -308,7 +309,7 @@ for (let key in user) {
308309
}
309310
```
310311

311-
...Mas isso não copia os sinalizadores. Então se nós quisermos um clone "melhor" então é preferível `Object.defineProperties`.
312+
...Mas isso não copia os sinalizadores. Assim, se nós quisermos um clone "melhor" então é preferível `Object.defineProperties`.
312313

313314
Outra diferença é que `for..in` ignora propriedades simbólicas, mas `Object.getOwnPropertyDescriptors` returna *todas* as propriedades descritoras, incluindo as simbólicas.
314315

@@ -322,10 +323,10 @@ Também existem métodos que limitam o acesso ao objeto *inteiro*:
322323
: Proíbe a adição de novas propriedades ao objeto.
323324

324325
[Object.seal(obj)](mdn:js/Object/seal)
325-
: Proíbe a adição/remoção de propriedades. Seta `configurable: false` para todas as propriedades existentes.
326+
: Proíbe a adição/remoção de propriedades. Coloca `configurable: false` para todas as propriedades existentes.
326327

327328
[Object.freeze(obj)](mdn:js/Object/freeze)
328-
: Proíbe adicionar/remover/alterar propriedades. Seta `configurable: false, writable: false` para todas as propriedades existentes.
329+
: Proíbe adicionar/remover/alterar propriedades. Coloca `configurable: false, writable: false` para todas as propriedades existentes.
329330

330331
E também existem testes para eles:
331332

0 commit comments

Comments
 (0)