Skip to content

Commit f62a884

Browse files
committed
Prototype - parcial
1 parent b3e4471 commit f62a884

2 files changed

Lines changed: 57 additions & 55 deletions

File tree

doc/pt/object/prototype.md

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,44 @@
1-
## Prototipo
1+
## Protótipo
22

3-
JavaScript no posee en sus características un sistema clásico de herencia, sino que
4-
utiliza un *prototipo* para esto.
3+
Javascript não possue em suas características um sistema clássico de herença, mas utiliza *protótipos* para isto.
54

6-
Si bien a menudo se considera uno de los puntos débiles de JavaScript, el
7-
modelo de herecia prototipado es de hecho más poderoso que el modelo clásico.
8-
Por ejemplo, es bastante trivial construir un modelo clásico en la parte superior del mismo,
9-
mientras esto es una tarea mucho más difícil.
5+
Enquanto isso muitas vezes é considerada um dos pontos fracos do JavaScript, o modelo de herança prototípica é de fato mais poderoso que o modelo clássico. Por exemplo, é relativamente trivial construir um modelo clássico baseado em um modelo de protótipo, enquanto o contrário é uma tarefa muito mais difícil.
106

11-
Debido al hecho que JavaScript es básicamente el único lenguaje que utiliza
12-
apliamente la herencia prototipada, se necesita algo de tiempo para adaptarse a
13-
las diferencias entre los dos modelos.
7+
JavaScript é a única linguagem utilizada, que apresenta herança prototípica, por isso pode-se levar algum tempo para ajustar-se às diferenças entre os dois modelos.
148

15-
La primera gran diferencia es que la herencia en JavaScript se realiza usando
16-
llamadas de *cadenas de prototipo* (*prototype chains*).
9+
A primeira grande diferença é que a herança em JavaScript usa *cadeias de protótipos* (*prototype chains*).
1710

18-
> **Nota:** Simplemente usando `Bar.prototype = Foo.prototype` dará lugar a dos objetos
19-
> que comparten el **mismo** prototipo. Por lo tanto, los cambios que se realicen en un
20-
> objeto afectará al otro objeto, así, en la mayoría de los casos no es el efecto
21-
> deseado.
11+
> **Nota:** Simplesmente usando `Bar.prototype = Foo.prototype` teremos dois objetos
12+
> que compartilham o **mesmo** protótipo. Portanto, as mudanças que se realizem em um
13+
> destes objetos afetará o outro objeto, sendo assim, na maioria dos casos não este não é
14+
> o comportamento desejado pelo desenvolvedor.
2215
16+
// construtor Foo
2317
function Foo() {
2418
this.value = 42;
2519
}
20+
21+
// Adiciona um método ao protótipo do construtor Foo
2622
Foo.prototype = {
2723
method: function() {}
28-
};
24+
}
2925

26+
// construtor Bar
3027
function Bar() {}
3128

32-
// Asigna el prototipo de Bar como una nueva instancia de Foo
29+
// Define o protótipo de Bar como uma nova instância de Foo
3330
Bar.prototype = new Foo();
31+
32+
// Adiciona ao protótipo de Bar uma nova propriedade
3433
Bar.prototype.foo = 'Hello World';
3534

36-
// Asegura que el constructor sea Bar
35+
// Assegura que o construcor seja Bar
3736
Bar.prototype.constructor = Bar;
3837

39-
var test = new Bar() // crea una nueva instancia de Bar
38+
// cria uma nova instância do construtor Bar
39+
var test = new Bar();
4040

41-
// Resultado de cadena de prototipos (prototype chain)
41+
// Resultado da cadeia de protótipos (prototype chain)
4242
test [instance of Bar]
4343
Bar.prototype [instance of Foo]
4444
{ foo: 'Hello World' }
@@ -47,12 +47,13 @@ llamadas de *cadenas de prototipo* (*prototype chains*).
4747
Object.prototype
4848
{ toString: ... /* etc. */ }
4949

50-
En el código anterior, el objeto `test` hereda de `Bar.prototype` y `Foo.prototype`;
51-
por lo tanto, tendrá acceso a la función `method` que se ha definido en `Foo`.
52-
También se tendrá acceso a a la propiedad `value` de la **única** instancia de `Foo`
53-
que compone su prototipo. Es importante tomar en cuenta que `new Bar()` **no** creará una nueva
54-
instancia de `Foo`, pero retornará lo asignado en su prototipo; de este modo, todas las instancias
55-
de `Bar` tendrán que compartir el **mismo** `valor` de la propiedad.
50+
No código anterior, o objeto `test` hedará de `Bar.prototype` e `Foo.prototype`,
51+
por isso ele terá acesso a função `method` que foi definida em `Foo`.
52+
53+
Ele também terá acesso a propriedade `value` da **única** instância de `Foo`
54+
que compõe seu protótipo. É importante notar que `new Bar()` **não** criará uma nova
55+
instância de `Foo`, mas reutilizará os atributos associados ao seu protótipo, desta forma,
56+
todas as instâncias de `Bar` compartilharão o **mesmo** `valor` da propriedade.
5657

5758
> **Nota:** **No** utilice `Bar.prototype = Foo`, ya que no apunta al prototipo
5859
> de `Foo`, sino al objeto de la función `Foo`. Así la cadena de prototipo

site/pt/index.html

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!DOCTYPE html><html lang="pt"><head><title>JavaScript Garden</title><meta charset="utf-8"><meta name="description" content="Um guia sobre as peculiaridades e defeitos do JavaScript."><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../style/garden.css" media="all"><link rel="stylesheet" href="../style/print.css" media="print"><!--[if lt IE 9]>
22
<script src="javascript/html5.js"></script>
33
<![endif]-->
4-
</head><body><!-- Navigation--><nav id="nav_main"><div><ul><li><a href="/JavaScript-Garden/" title="JavaScript Garden in English">en</a></li><li><a href="/JavaScript-Garden/es" title="JavaScript Garden es Español">es</a></li><li><a href="/JavaScript-Garden/fi" title="JavaScript-puutarha suomeksi">fi</a></li><li><a href="/JavaScript-Garden/ja" title="JavaScript Garden in Japanese">ja</a></li><li><a href="/JavaScript-Garden/ko" title="JavaScript Garden">ko</a></li><li><a href="/JavaScript-Garden/pl" title="JavaScript Garden - ogród JavaScript po polsku">pl</a></li><li class="active"><a href="/JavaScript-Garden/pt" title="JavaScript Garden em Português">pt</a></li><li><a href="/JavaScript-Garden/ru" title="JavaScript Гарден по-русски">ru</a></li><li><a href="/JavaScript-Garden/tr" title="JavaScript Garden Türkçe">tr</a></li><li><a href="/JavaScript-Garden/zh" title="JavaScript Garden 中文翻译">zh</a></li><li><a href="/JavaScript-Garden/zhtw" title="JavaScript Garden 繁體中文翻譯">zhtw</a></li></ul><a id="top" href="#intro" title="Back to top">#top</a><a id="hide_menu" class="tablet">Hide Menu</a></div><ul><li class="nav_intro"><h1><a href="#intro">Introdução</a></h1><ul></ul></li><li class="nav_object"><h1><a href="#object">Objetos</a></h1><ul><li><a href="#object.general">Uso de objetos e propriedades</a></li><li><a href="#object.prototype">Prototipo</a></li><li><a href="#object.hasownproperty"><code>hasOwnProperty</code></a></li><li><a href="#object.forinloop">El bucle <code>for in</code></a></li></ul></li><li class="nav_function"><h1><a href="#function">Funções</a></h1><ul><li><a href="#function.general">La declaración de funciones y expresiones</a></li><li><a href="#function.this">Cómo trabaja <code>this</code></a></li><li><a href="#function.closures">Closures y referencias</a></li><li><a href="#function.arguments">El objeto <code>arguments</code></a></li><li><a href="#function.constructors">Constructores</a></li><li><a href="#function.scopes">Ámbitos y Namespaces</a></li></ul></li><li class="nav_array"><h1><a href="#array">Arrays</a></h1><ul><li><a href="#array.general">Iteración de un Array y sus propiedades</a></li><li><a href="#array.constructor">El constructor <code>Array</code></a></li></ul></li><li class="nav_types"><h1><a href="#types">Tipos</a></h1><ul><li><a href="#types.equality">Equality and Comparisons</a></li><li><a href="#types.typeof">The <code>typeof</code> Operator</a></li><li><a href="#types.instanceof">The <code>instanceof</code> Operator</a></li><li><a href="#types.casting">Type Casting</a></li></ul></li><li class="nav_core"><h1><a href="#core">Núcleo</a></h1><ul><li><a href="#core.eval">¿Por qué no usar <code>eval</code>?</a></li><li><a href="#core.undefined"><code>undefined</code> y <code>null</code></a></li><li><a href="#core.semicolon">Automatic Semicolon Insertion</a></li></ul></li><li class="nav_other"><h1><a href="#other">Outros</a></h1><ul><li><a href="#other.timeouts"><code>setTimeout</code> and <code>setInterval</code></a></li></ul></li></ul></nav><!-- Mobile navigation--><nav id="nav_mobile"><a id="nav_prev_section" href="#">prev section<span class="nav_section_name">section name</span></a><a id="nav_next_section" href="#">next section<span class="nav_section_name">section name</span></a><a id="show_menu">show menu</a></nav><!-- Sections--><section id="intro"><!-- Introduction--><header id="intro.intro"><h1>Introdução</h1><div><p><strong>Javascript Garden</strong> é uma coleção crescente de documentação sobre as partes mais peculiares da linguagem de programação JavaScript. Ele dá conselhos para evitar os erros mais comuns e sútis, bem como problemas de desempenho e más práticas, que os programadores de JavaScript não-especialistas podem encontrar em seus estudos ao se aprofundar na linguagem.</p>
4+
</head><body><!-- Navigation--><nav id="nav_main"><div><ul><li><a href="/JavaScript-Garden/" title="JavaScript Garden in English">en</a></li><li><a href="/JavaScript-Garden/es" title="JavaScript Garden es Español">es</a></li><li><a href="/JavaScript-Garden/fi" title="JavaScript-puutarha suomeksi">fi</a></li><li><a href="/JavaScript-Garden/ja" title="JavaScript Garden in Japanese">ja</a></li><li><a href="/JavaScript-Garden/ko" title="JavaScript Garden">ko</a></li><li><a href="/JavaScript-Garden/pl" title="JavaScript Garden - ogród JavaScript po polsku">pl</a></li><li class="active"><a href="/JavaScript-Garden/pt" title="JavaScript Garden em Português">pt</a></li><li><a href="/JavaScript-Garden/ru" title="JavaScript Гарден по-русски">ru</a></li><li><a href="/JavaScript-Garden/tr" title="JavaScript Garden Türkçe">tr</a></li><li><a href="/JavaScript-Garden/zh" title="JavaScript Garden 中文翻译">zh</a></li><li><a href="/JavaScript-Garden/zhtw" title="JavaScript Garden 繁體中文翻譯">zhtw</a></li></ul><a id="top" href="#intro" title="Back to top">#top</a><a id="hide_menu" class="tablet">Hide Menu</a></div><ul><li class="nav_intro"><h1><a href="#intro">Introdução</a></h1><ul></ul></li><li class="nav_object"><h1><a href="#object">Objetos</a></h1><ul><li><a href="#object.general">Uso de objetos e propriedades</a></li><li><a href="#object.prototype">Protótipo</a></li><li><a href="#object.hasownproperty"><code>hasOwnProperty</code></a></li><li><a href="#object.forinloop">El bucle <code>for in</code></a></li></ul></li><li class="nav_function"><h1><a href="#function">Funções</a></h1><ul><li><a href="#function.general">La declaración de funciones y expresiones</a></li><li><a href="#function.this">Cómo trabaja <code>this</code></a></li><li><a href="#function.closures">Closures y referencias</a></li><li><a href="#function.arguments">El objeto <code>arguments</code></a></li><li><a href="#function.constructors">Constructores</a></li><li><a href="#function.scopes">Ámbitos y Namespaces</a></li></ul></li><li class="nav_array"><h1><a href="#array">Arrays</a></h1><ul><li><a href="#array.general">Iteración de un Array y sus propiedades</a></li><li><a href="#array.constructor">El constructor <code>Array</code></a></li></ul></li><li class="nav_types"><h1><a href="#types">Tipos</a></h1><ul><li><a href="#types.equality">Equality and Comparisons</a></li><li><a href="#types.typeof">The <code>typeof</code> Operator</a></li><li><a href="#types.instanceof">The <code>instanceof</code> Operator</a></li><li><a href="#types.casting">Type Casting</a></li></ul></li><li class="nav_core"><h1><a href="#core">Núcleo</a></h1><ul><li><a href="#core.eval">¿Por qué no usar <code>eval</code>?</a></li><li><a href="#core.undefined"><code>undefined</code> y <code>null</code></a></li><li><a href="#core.semicolon">Automatic Semicolon Insertion</a></li></ul></li><li class="nav_other"><h1><a href="#other">Outros</a></h1><ul><li><a href="#other.timeouts"><code>setTimeout</code> and <code>setInterval</code></a></li></ul></li></ul></nav><!-- Mobile navigation--><nav id="nav_mobile"><a id="nav_prev_section" href="#">prev section<span class="nav_section_name">section name</span></a><a id="nav_next_section" href="#">next section<span class="nav_section_name">section name</span></a><a id="show_menu">show menu</a></nav><!-- Sections--><section id="intro"><!-- Introduction--><header id="intro.intro"><h1>Introdução</h1><div><p><strong>Javascript Garden</strong> é uma coleção crescente de documentação sobre as partes mais peculiares da linguagem de programação JavaScript. Ele dá conselhos para evitar os erros mais comuns e sútis, bem como problemas de desempenho e más práticas, que os programadores de JavaScript não-especialistas podem encontrar em seus estudos ao se aprofundar na linguagem.</p>
55

66
<p>Javascript Garden não pretende ensinar-lhe JavaScript. O pré-conhecimento da linguagem é altamente recomendável, a fim de compreender os tópicos abordados neste guia. Se você preferir, aprender as noções básicas da linguagem, por favor, dirija-se ao excelente <a href="https://developer.mozilla.org/en/JavaScript/Guide">guia</a>
77
disponível no Mozilla Developer Network.</p>
@@ -119,47 +119,47 @@ <h2>Licença</h2>
119119
<p>As propriedades dos objetos podem ser definidos com carateres simples como strings. Devido ao mal desenho do parser Javascript, o exemplo anterior lançará uma excessão <code>SyntaxError</code> para ambientes rodando versões anteriores ao
120120
ECMAScript 5.</p>
121121

122-
<p>Este erro se deve ao fato de <code>delete</code> ser uma <em>palavra reservada</em> da linguagem, por tanto deve ser definido como uma string literal para garantir que ele será interpretado corretamente pelos parsers Javascript mais velhos.</p></div></article><article id="object.prototype"><h2>Prototipo</h2><div><p>JavaScript no posee en sus características un sistema clásico de herencia, sino que
123-
utiliza un <em>prototipo</em> para esto. </p>
122+
<p>Este erro se deve ao fato de <code>delete</code> ser uma <em>palavra reservada</em> da linguagem, por tanto deve ser definido como uma string literal para garantir que ele será interpretado corretamente pelos parsers Javascript mais velhos.</p></div></article><article id="object.prototype"><h2>Protótipo</h2><div><p>Javascript não possue em suas características um sistema clássico de herença, mas utiliza <em>protótipos</em> para isto.</p>
124123

125-
<p>Si bien a menudo se considera uno de los puntos débiles de JavaScript, el
126-
modelo de herecia prototipado es de hecho más poderoso que el modelo clásico.
127-
Por ejemplo, es bastante trivial construir un modelo clásico en la parte superior del mismo,
128-
mientras esto es una tarea mucho más difícil.</p>
124+
<p>Enquanto isso muitas vezes é considerada um dos pontos fracos do JavaScript, o modelo de herança prototípica é de fato mais poderoso que o modelo clássico. Por exemplo, é relativamente trivial construir um modelo clássico baseado em um modelo de protótipo, enquanto o contrário é uma tarefa muito mais difícil.</p>
129125

130-
<p>Debido al hecho que JavaScript es básicamente el único lenguaje que utiliza
131-
apliamente la herencia prototipada, se necesita algo de tiempo para adaptarse a
132-
las diferencias entre los dos modelos.</p>
126+
<p>JavaScript é a única linguagem utilizada, que apresenta herança prototípica, por isso pode-se levar algum tempo para ajustar-se às diferenças entre os dois modelos.</p>
133127

134-
<p>La primera gran diferencia es que la herencia en JavaScript se realiza usando
135-
llamadas de <em>cadenas de prototipo</em> (<em>prototype chains</em>).</p>
128+
<p>A primeira grande diferença é que a herança em JavaScript usa <em>cadeias de protótipos</em> (<em>prototype chains</em>).</p>
136129

137130
<aside>
138-
<p><strong>Nota:</strong> Simplemente usando <code>Bar.prototype = Foo.prototype</code> dará lugar a dos objetos
139-
que comparten el <strong>mismo</strong> prototipo. Por lo tanto, los cambios que se realicen en un
140-
objeto afectará al otro objeto, así, en la mayoría de los casos no es el efecto
141-
deseado.</p>
131+
<p><strong>Nota:</strong> Simplesmente usando <code>Bar.prototype = Foo.prototype</code> teremos dois objetos
132+
que compartilham o <strong>mesmo</strong> protótipo. Portanto, as mudanças que se realizem em um
133+
destes objetos afetará o outro objeto, sendo assim, na maioria dos casos não este não é
134+
o comportamento desejado pelo desenvolvedor.</p>
142135
</aside>
143136

144-
<pre><code>function Foo() {
137+
<pre><code>// construtor Foo
138+
function Foo() {
145139
this.value = 42;
146140
}
141+
142+
// Adiciona um método ao protótipo do construtor Foo
147143
Foo.prototype = {
148144
method: function() {}
149-
};
145+
}
150146

147+
// construtor Bar
151148
function Bar() {}
152149

153-
// Asigna el prototipo de Bar como una nueva instancia de Foo
150+
// Define o protótipo de Bar como uma nova instância de Foo
154151
Bar.prototype = new Foo();
152+
153+
// Adiciona ao protótipo de Bar uma nova propriedade
155154
Bar.prototype.foo = &#39;Hello World&#39;;
156155

157-
// Asegura que el constructor sea Bar
156+
// Assegura que o construcor seja Bar
158157
Bar.prototype.constructor = Bar;
159158

160-
var test = new Bar() // crea una nueva instancia de Bar
159+
// cria uma nova instância do construtor Bar
160+
var test = new Bar();
161161

162-
// Resultado de cadena de prototipos (prototype chain)
162+
// Resultado da cadeia de protótipos (prototype chain)
163163
test [instance of Bar]
164164
Bar.prototype [instance of Foo]
165165
{ foo: &#39;Hello World&#39; }
@@ -169,12 +169,13 @@ <h2>Licença</h2>
169169
{ toString: ... /* etc. */ }
170170
</code></pre>
171171

172-
<p>En el código anterior, el objeto <code>test</code> hereda de <code>Bar.prototype</code> y <code>Foo.prototype</code>;
173-
por lo tanto, tendrá acceso a la función <code>method</code> que se ha definido en <code>Foo</code>.
174-
También se tendrá acceso a a la propiedad <code>value</code> de la <strong>única</strong> instancia de <code>Foo</code>
175-
que compone su prototipo. Es importante tomar en cuenta que <code>new Bar()</code> <strong>no</strong> creará una nueva
176-
instancia de <code>Foo</code>, pero retornará lo asignado en su prototipo; de este modo, todas las instancias
177-
de <code>Bar</code> tendrán que compartir el <strong>mismo</strong> <code>valor</code> de la propiedad.</p>
172+
<p>No código anterior, o objeto <code>test</code> hedará de <code>Bar.prototype</code> e <code>Foo.prototype</code>,
173+
por isso ele terá acesso a função <code>method</code> que foi definida em <code>Foo</code>.</p>
174+
175+
<p>Ele também terá acesso a propriedade <code>value</code> da <strong>única</strong> instância de <code>Foo</code>
176+
que compõe seu protótipo. É importante notar que <code>new Bar()</code> <strong>não</strong> criará uma nova
177+
instância de <code>Foo</code>, mas reutilizará os atributos associados ao seu protótipo, desta forma,
178+
todas as instâncias de <code>Bar</code> compartilharão o <strong>mesmo</strong> <code>valor</code> da propriedade.</p>
178179

179180
<aside>
180181
<p><strong>Nota:</strong> <strong>No</strong> utilice <code>Bar.prototype = Foo</code>, ya que no apunta al prototipo

0 commit comments

Comments
 (0)