Skip to content

Commit 06ba0db

Browse files
committed
refactor: fixes merge conflict, notes according to PR review and adds pending translations
1 parent 2d40fdd commit 06ba0db

File tree

3 files changed

+28
-28
lines changed

3 files changed

+28
-28
lines changed

Diff for: 1-js/08-prototypes/03-native-prototypes/1-defer-to-prototype/task.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ importance: 5
66

77
Adicione ao protótipo de todas as funções o método `defer(ms)`, que executa a função depois de `ms` milisegundos.
88

9-
Depois de fazer isso, este código deveria funcionar:
9+
Depois de fazer isso, esse código deve funcionar:
1010

1111
```js
1212
function f() {

Diff for: 1-js/08-prototypes/03-native-prototypes/2-defer-to-prototype-extended/solution.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ f.defer(1000)(1, 2); // mostra 3 depois de 1 segundo
1818

1919
Note que: nós usamos `this` no `f.apply` para nossa decoração funcionar para métodos de objetos.
2020

21-
Então, se a função *wrapper* é chamada como um método de um objeto, então o this é passado para o método `f` original.
21+
Então, se a função *wrapper* for chamada como um método de objeto, o `this` é passado para o método `f` original.
2222

2323
```js run
2424
Function.prototype.defer = function(ms) {

Diff for: 1-js/08-prototypes/03-native-prototypes/article.md

+26-26
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
# Protótipos Nativos
22

3-
A propriedade `"prototype"` é comumente utilizada pelo núcleo do próprio JavaScript. Toda função construtora embutida a usa.
3+
A propriedade `"prototype"` é amplamente utilizada pelo próprio núcleo do JavaScript. Todas as funções construtoras integradas o utilizam.
44

5-
First we'll look at the details, and then how to use it for adding new capabilities to built-in objects.
5+
Primeiro veremos os detalhes e depois como usá-lo para adicionar novos recursos a objetos integrados.
66

77
## Object.prototype
88

9-
Digamos que a gente imprima um objeto vazio:
9+
Digamos que produzimos um objeto vazio:
1010

1111
```js run
1212
let obj = {};
1313
alert( obj ); // "[object Object]" ?
1414
```
1515

16-
Onde está o código que gera a string `"[object Object]"`? Isso é um método embutido `toString`, mas onde ele está? O `obj` está vazio!
16+
Onde está o código que gera a string `"[object Object]"`? Isto vem de um método embutido `toString`, mas onde ele está? O `obj` está vazio!
1717

18-
... Mas a notação abreviada `obj = {}` é o mesmo que `obj = new Object()`, onde `Object` é uma função construtora embutida, com seu próprio `prototype` referenciando um objeto enorme com `toString` e outros métodos.
18+
... A notação abreviada `obj = {}` é o mesmo que `obj = new Object()`. Onde `Object` é uma função construtora embutida, com o seu próprio `prototype` referenciando um objeto enorme, possuindo `toString` e outros métodos.
1919

2020
Veja o que está acontecendo:
2121

2222
![](object-prototype.svg)
2323

24-
Quando `new Object()` é chamado (ou um objeto literal `{...}` é criado), o seu `[[Prototype]]` é configurado para o `Object.prototype` de acordo com a regra que nós discutimos no capítulo anterior:
24+
Quando `new Object()` é invocado (ou um objeto literal `{...}` é criado), o seu `[[Prototype]]` é configurado para o `Object.prototype`, de acordo com a regra que nós discutimos no capítulo anterior:
2525

2626
![](object-prototype-1.svg)
2727

@@ -38,19 +38,19 @@ alert(obj.toString === obj.__proto__.toString); //true
3838
alert(obj.toString === Object.prototype.toString); //true
3939
```
4040

41-
Please note that there is no more `[[Prototype]]` in the chain above `Object.prototype`:
41+
Observe que não há mais `[[Prototype]]` na cadeia acima de `Object.prototype`:
4242

4343
```js run
4444
alert(Object.prototype.__proto__); // null
4545
```
4646

4747
## Outros protótipos embutidos
4848

49-
Outros objetos embutidos, como `Array`, `Date`, `Function`, entre outros, também mantém métodos nos seus protótipos.
49+
Outros objetos embutidos, como `Array`, `Date`, `Function`, etc., também têm métodos nos seus protótipos.
5050

51-
For instance, when we create an array `[1, 2, 3]`, the default `new Array()` constructor is used internally. So `Array.prototype` becomes its prototype and provides methods. That's very memory-efficient.
51+
Por exemplo, quando criamos um array `[1, 2, 3]`, o construtor padrão `new Array()` é usado internamente. Então `Array.prototype` se torna seu protótipo e fornece métodos. Isso é muito eficiente em termos de memória.
5252

53-
By specification, all of the built-in prototypes have `Object.prototype` on the top. That's why some people say that "everything inherits from objects".
53+
Por especificação, todos os protótipos integrados têm `Object.prototype` no topo. É por isso que algumas pessoas dizem que “tudo herda dos objetos”.
5454

5555
Aqui temos uma visão geral (para 3 protótipos embutidos):
5656

@@ -64,7 +64,7 @@ let arr = [1, 2, 3];
6464
// herda de Array.prototype?
6565
alert( arr.__proto__ === Array.prototype ); // true
6666

67-
// e depois herda de Object.prototype?
67+
// a seguir herda de Object.prototype?
6868
alert( arr.__proto__.__proto__ === Object.prototype ); // true
6969

7070
// e null no topo.
@@ -84,11 +84,11 @@ Como vimos antes, `Object.prototype` também tem o método `toString`, mas `Arra
8484
![](native-prototypes-array-tostring.svg)
8585

8686

87-
Ferramentas embutidas em navegadores, como o console do desenvolvedor no Chrome, também mostram herança (objetos embutidos podem precisar de usar o `console.dir`):
87+
Ferramentas embutidas em navegadores, como o console do desenvolvedor no Chrome, também mostram herança (para objetos embutidos pode ser preciso usar `console.dir`):
8888

8989
![](console_dir_array.png)
9090

91-
Outros objetos embutidos também trabalham da mesma forma. Até mesmo funções -- elas são objetos de um construtor `Function` embutido, e seus métodos (`call`/`apply` e outros) são obtidos de `Function.prototype`. Funções também têm seu próprio `toString`.
91+
Outros objetos embutidos também trabalham da mesma forma. Até mesmo funções -- elas são objetos de um construtor `Function` embutido, e os seus métodos (`call`/`apply`, e outros) são obtidos de `Function.prototype`. Funções também têm o seu próprio `toString`.
9292

9393
```js run
9494
function f() {}
@@ -101,9 +101,9 @@ alert(f.__proto__.__proto__ == Object.prototype); // true, herdado de object
101101

102102
As coisas mais complicadas acontecem com strings, números e boleanos.
103103

104-
Como sabemos, eles não são objetos. Mas se nós tentarmos acessar as propriedades deles, temporariamente são criados objetos que contém os construtores embutidos `String`, `Number` and `Boolean`. Eles fornecem os métodos e disaparecem.
104+
Como sabemos, eles não são objetos. Mas se nós tentarmos acessar as propriedades deles, temporariamente são criados objetos usando os construtores embutidos `String`, `Number` and `Boolean`. Esses objetos fornecem os métodos e desaparecem.
105105

106-
Esses objetos são criados invisivelmente para nós e a maioria dos interpretadores (*engines*) otimizam esse processo, apesar da especificação descrevê-lo exatamente dessa forma. Os métodos desses objetos também residem nos protótipos, disponíveis como `String.prototype`, `Number.prototype` e `Boolean.prototype`.
106+
Esses objetos são criados invisivelmente para nós e a maioria dos interpretadores (*engines*) otimizam esse processo, apesar da especificação descrevê-lo exatamente desta forma. Os métodos desses objetos também residem nos protótipos, disponíveis como `String.prototype`, `Number.prototype` e `Boolean.prototype`.
107107

108108
```warn header="Os valores `null` e `undefined` não têm objetos que os envolvam"
109109
O valores especiais `null` e `undefined` se destacam dos outros. Eles não têm objetos que os envolem, então métodos e propriedades não estão disponíveis para eles. Também não existem protótipos correspondentes.
@@ -121,19 +121,19 @@ String.prototype.show = function() {
121121
"BUM!".show(); // BUM!
122122
```
123123

124-
Durante o processo do desenvolvimento, nós podemos ter novas ideias de métodos embutidos que nós gostaríamos de ter, e podemos ficar tentados a adicioná-los aos protótipos nativos. Mas isso é geralmente uma má ideia.
124+
Durante o processo de desenvolvimento, nós podemos ter novas ideias de métodos embutidos que gostaríamos de ter, e podemos ficar tentados a adicioná-los aos protótipos nativos. Mas isso é geralmente uma má ideia.
125125

126126
```warn
127-
Prototypes are global, so it's easy to get a conflict. If two libraries add a method `String.prototype.show`, then one of them will be overwriting the method of the other.
127+
Os protótipos são globais, por isso é fácil criar conflitos. Se duas bibliotecas adicionarem um método `String.prototype.show`, então uma delas substituirá o método da outra.
128128
129129
Por isso, geralmente, modificar um protótipo nativo é considerado uma má ideia.
130130
```
131131

132132
**Na programação moderna, existe apenas um caso erm que modificar protótipos nativos é aprovado: fazer polyfill (polyfilling).**
133133

134-
*Polyfill* é um termpo para criar um substituto para um método que existe na especificação do JavaScript, mas ainda não tem suporte em algum interpretador particular de JavaScript.
134+
*Polyfill* é um termo para criar um substituto para um método que existe na especificação, mas que ainda não tem suporte em um particular interpretador de JavaScript.
135135

136-
Nesse caso nós podemos implementar e preencher o protótipo embutido com ele.
136+
Nesse caso nós o podemos implementar e preencher o protótipo embutido com ele.
137137

138138
Por exemplo:
139139

@@ -157,13 +157,13 @@ alert( "La".repeat(3) ); // LaLaLa
157157

158158
## Pegando emprestado dos protótipos
159159

160-
No capítulo <info:call-apply-decorators#method-borrowing>, nós falamos sobre pegar métodos emprestado.
160+
No capítulo <info:call-apply-decorators#method-borrowing>, nós falamos sobre pegar métodos emprestados.
161161

162162
Isso é quando nós pegamos um método de um objeto e o copiamos para outro.
163163

164164
Alguns métodos de protótipos nativos são emprestados com muita frequência.
165165

166-
For instance, if we're making an array-like object, we may want to copy some `Array` methods to it.
166+
Por exemplo, se estivermos criando um objeto semelhante a um array, podemos querer copiar alguns métodos `Array` para ele.
167167

168168
Veja um exemplo:
169169

@@ -183,16 +183,16 @@ alert( obj.join(',') ); // Olá,mundo!
183183

184184
Ele funciona porque o algoritmo interno do método `join` embutido só precisa dos índices corretos e da propriedade `length`. Ele não confere se o objeto é de fato uma array. Muitos métodos enbutidos são assim.
185185

186-
Outra possibilidade é herdar configurando `obj.__proto__` para `Array.prototype`, de forma que todos os métodos de `Array` fiquem automaticamente disponíveis em `obj`.
186+
Outra possibilidade é herdando, configurando `obj.__proto__` para `Array.prototype`, de forma que todos os métodos de `Array` fiquem automaticamente disponíveis em `obj`.
187187

188188
Mas isso é impossível se `obj` já herda de outro objeto. Lembre-se, nós só podemos herdar de um objeto por vez.
189189

190-
Pegar métodos emprestado é mais flexível, isso permite misturar as funcionalidades de diferentes objetos caso necessário.
190+
Pegar métodos emprestados é mais flexível, isso permite misturar as funcionalidades de diferentes objetos caso necessário.
191191

192192
## Resumo
193193

194-
- Todos os objetos enbutidos seguem o mesmo padrão:
194+
- Todos os objetos embutidos seguem o mesmo padrão:
195195
- Os métodos são guardados no protótipo (`Array.prototype`, `Object.prototype`, `Date.prototype`, etc.)
196-
- O objeto só guarda os dados nele mesmo (itens de array, propriedades de objetos, a data)
196+
- O objeto só guarda os dados nele mesmo (itens de array, propriedades de objetos, uma data)
197197
- Tipos primitivos também guardam métodos em protótipos de objetos que os envolvem: `Number.prototype`, `String.prototype` e `Boolean.prototype`. Apenas `undefined` e `null` não tem objetos invólucros.
198-
- Protótipos embutidos podem ser modificados ou populados com novos métodos. Mas modificá-los não é recomendado. O único caso aceitável é provavelmente quando nós adicionamos um novo comportamento e ele ainda não tem suporte em algum interpretador (*engine*) de JavaScript.
198+
- Protótipos embutidos podem ser modificados ou populados com novos métodos. Mas modificá-los não é recomendado. O único caso aceitável, é provavelmente quando nós adicionamos um novo comportamento que ainda não tem suporte em algum interpretador (*engine*) de JavaScript.

0 commit comments

Comments
 (0)