You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/02-function-prototype/1-changing-prototype/solution.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,11 +3,11 @@ Respostas:
3
3
4
4
1.`true`.
5
5
6
-
A atribuição do`Rabbit.prototype`seta o `[[Prototype]]` para novos objetos, mas não afeta os objetos que já existem.
6
+
A atribuição a`Rabbit.prototype`configura o `[[Prototype]]` para novos objetos, mas não afeta os objetos que já existem.
7
7
8
8
2.`false`.
9
9
10
-
Objetos são atrbuídos por referência. O objeto do `Rabbit.prototype` não é duplicado, ele continua sendo um único objeto refereciado por `Rabbit.prototype` e pelo `[[Prototype]]` do `rabbit`.
10
+
Objetos são atrbuídos por referência. O objeto do `Rabbit.prototype` não é duplicado, ele continua sendo um único objeto referenciado por `Rabbit.prototype` e pelo `[[Prototype]]` do `rabbit`.
11
11
12
12
Portanto, quando nós mudamos o seu conteúdo através de uma referência, ele fica visível para as outras.
..But if someone, so to speak, overwrites`User.prototype`and forgets to recreate `constructor`to reference `User`, then it would fail.
18
+
...Mas se alguém, por acaso, sobrescrever`User.prototype`e esquecer de recriar o `constructor`com referência ao próprio `User`, então o código iria falhar.
19
19
20
-
For instance:
20
+
Por exemplo:
21
21
22
22
```js run
23
23
functionUser(name) {
@@ -33,17 +33,17 @@ let user2 = new user.constructor('Pete');
33
33
alert( user2.name ); // undefined
34
34
```
35
35
36
-
Why `user2.name`is`undefined`?
36
+
Por que `user2.name`está`undefined`?
37
37
38
-
Here's how `new user.constructor('Pete')`works:
38
+
Abaixo está como o `new user.constructor('Pete')`funciona:
39
39
40
-
1.First, it looks for`constructor`in`user`. Nothing.
41
-
2.Then it follows the prototype chain. The prototype of`user`is`User.prototype`, and it also has no `constructor` (because we "forgot" to set it right!).
42
-
3.Going further up the chain, `User.prototype`is a plain object, its prototype is the built-in `Object.prototype`.
43
-
4.Finally, for the built-in `Object.prototype`, there's a built-in`Object.prototype.constructor == Object`. So it is used.
40
+
1.Primeiro, ele procura o`constructor`do`user`. Não o encontra.
41
+
2.Depois, ele segue a cadeia de protótipos. O protótipo de`user`é`User.prototype`, e ele também não tem um `constructor` (porque nós "esquecemos" de configurá-lo!).
42
+
3.Indo adiante na cadeia, `User.prototype`é um objeto vazio, cujo protótipo é o `Object.prototype` padrão.
43
+
4.Por último, para o `Object.prototype` padrão existe um`Object.prototype.constructor == Object` padrão. Então, ele é usado.
44
44
45
-
Finally, at the end, we have`let user2 = new Object('Pete')`.
45
+
No fim, nós temos`let user2 = new Object('Pete')`.
46
46
47
-
Probably, that's not what we want. We'd like to create `new User`, not `new Object`. That's the outcome of the missing`constructor`.
47
+
Provavelmente não é isso que nós queremos. Nós gostaríamos de criar um `new User`, não um `new Object`. Essa é a consequência da falta de um`constructor`.
48
48
49
-
(Just in case you're curious, the `new Object(...)`call converts its argument to an object. That's a theoretical thing, in practice no one calls `new Object`with a value, and generally we don't use`new Object`to make objects at all).
49
+
(Caso você esteja curioso, a chamada `new Object(...)`converte o seu argumento para um objeto. Isso é algo teórico, mas na prática ninguém faz a chamada `new Object`com um valor, e geralmente nós não usamos`new Object`para criar objetos).
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/02-function-prototype/4-new-object-same-constructor/task.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,14 +2,14 @@ importance: 5
2
2
3
3
---
4
4
5
-
# Create an object with the same constructor
5
+
# Criando um objeto com o mesmo construtor
6
6
7
-
Imagine, we have an arbitrary object`obj`, created by a constructor function -- we don't know which one, but we'd like to create a new object using it.
7
+
Imagine que nós temos um objeto`obj` arbitrário, criado por uma função construtura -- nós não sabemos qual é, mas nós gostaríamos de criar um novo objeto usando ela.
8
8
9
-
Can we do it like that?
9
+
Nós podemos fazer isso dessa forma?
10
10
11
11
```js
12
12
let obj2 =newobj.constructor();
13
13
```
14
14
15
-
Give an example of a constructor function for `obj`which lets such code work right. And an example that makes it work wrong.
15
+
Dê um exemplo de uma função construtora para o `obj`que faça esse código funcionar corretamente, e outro exemplo que faça ele não funcionar.
Copy file name to clipboardExpand all lines: 1-js/08-prototypes/02-function-prototype/article.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Lembre-se, novos objetos podem ser criados com uma função construtora, usando `new F()`.
4
4
5
-
Se `F.prototype`é um objeto, então o operador `new` usa ela para setar `[[Prototype]]`no novo objeto.
5
+
Se `F.prototype`for um objeto, então o operador `new` usa ela para configurar o `[[Prototype]]`do novo objeto.
6
6
7
7
```smart
8
8
JavaScript tem herança prototipada desde o começo. Isso era uma das funcionalidades centrais da linguagem.
@@ -27,7 +27,7 @@ function Rabbit(name) {
27
27
Rabbit.prototype= animal;
28
28
*/!*
29
29
30
-
let rabbit =newRabbit("White Rabbit"); // rabbit.__proto__ == animal
30
+
let rabbit =newRabbit("Coelho Branco"); // rabbit.__proto__ == animal
31
31
32
32
alert( rabbit.eats ); // true
33
33
```
@@ -137,7 +137,7 @@ function Rabbit() {}
137
137
// não sobrescreva Rabbit.prototype completamente
138
138
// apenas adicione
139
139
Rabbit.prototype.jumps=true
140
-
// o Rabbit.prototype.constructor default fica preservado
140
+
// o Rabbit.prototype.constructor padrão fica preservado
141
141
```
142
142
143
143
Outra alternativa é recriar a propriedade `constructor` manualmente:
@@ -156,13 +156,13 @@ Rabbit.prototype = {
156
156
157
157
## Resumo
158
158
159
-
Neste capítulo, nós descrevemos brevemente a forma de setar um `[[Prototype]]` para os objetos via função construtura. Mais tarde nós vamos ver padrões (*patterns*) mais avançados de programação que dependem disso.
159
+
Neste capítulo, nós descrevemos brevemente a forma de configurar um `[[Prototype]]` para os objetos criados via função construtura. Mais tarde nós vamos ver padrões (*patterns*) mais avançados de programação que dependem disso.
160
160
161
161
É tudo bem simples, mas aqui estão algumas notas para deixar as coisas claras:
162
162
163
-
- A propriedade `F.prototype` (não confunda com o `[[Prototype]]`) seta o `[[Prototype]]` de novos objetos quando `new F()` é chamado.
164
-
- O valor de `F.prototype` deveria ser ou um objeto ou `null`: outros valores não vão funcionar.
165
-
- A propriedade `"prototype"` só tem o efeito especial quando setada em uma função construtora, e invocada com `new`.
163
+
- A propriedade `F.prototype` (não confunda com o `[[Prototype]]`) configura o `[[Prototype]]` de novos objetos quando `new F()` é chamado.
164
+
- O valor de `F.prototype` deveria ser um objeto ou `null`: outros valores não vão funcionar.
165
+
- A propriedade `"prototype"` só tem o efeito especial quando configurada em uma função construtora, e invocada com `new`.
166
166
167
167
Em objetos regulares, o `prototype` não tem nada de especial:
0 commit comments