aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/javascript/reference/classes/static/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/pt-br/web/javascript/reference/classes/static/index.html')
-rw-r--r--files/pt-br/web/javascript/reference/classes/static/index.html131
1 files changed, 131 insertions, 0 deletions
diff --git a/files/pt-br/web/javascript/reference/classes/static/index.html b/files/pt-br/web/javascript/reference/classes/static/index.html
new file mode 100644
index 0000000000..4bf01b5899
--- /dev/null
+++ b/files/pt-br/web/javascript/reference/classes/static/index.html
@@ -0,0 +1,131 @@
+---
+title: static
+slug: Web/JavaScript/Reference/Classes/static
+tags:
+ - Classes
+ - ECMAScript 2015
+ - Experimental
+ - JavaScript
+ - Static
+translation_of: Web/JavaScript/Reference/Classes/static
+---
+<div>{{jsSidebar("Classes")}}</div>
+
+<p>A palavra chave <strong>static</strong> define um método estático para a classe. Métodos estáticos não são chamados na instâncias da classe. Em vez disso, eles são chamados na própria classe. Geralmente, são funções utilitárias, como funções para criar ou clonar objetos.</p>
+
+<h2 id="Sintaxe">Sintaxe</h2>
+
+<pre class="syntaxbox">static nomeDoMetodo() { ... }</pre>
+
+<h2 id="Descrição">Descrição</h2>
+
+<p>Chamadas a métodos estáticos são feitas diretamente na classe e não podem ser feitas em uma instância da classe. Métodos estáticos são comumente utilizados como funções utilitárias.</p>
+
+<h2 id="Chamada_de_métodos_estáticos">Chamada de métodos estáticos</h2>
+
+<h3 id="De_outro_método_estático">De outro método estático</h3>
+
+<p>Para chamar um método estático dentro de outro método estático da mesma classe, podemos utilizar a palavra reservada <code>this</code>.</p>
+
+
+
+<pre class="brush: js"><code>class ChamadaDoMetodoEstatico {
+  static metodoEstatico() {
+    return 'O método estático foi chamado';
+  }
+  static outroMetodoEstatico() {
+    return this.metodoEstatico() + ' de outro método estático';
+  }
+}
+ChamadaDoMetodoEstatico.metodoEstatico();
+// 'O método estático foi chamado'
+
+ChamadaDoMetodoEstatico.outroMetodoEstatico();
+// 'O método estático foi chamado de outro método estático'</code>
+</pre>
+
+<h3 id="De_outro_construtor_e_outros_métodos">De outro construtor e outros métodos</h3>
+
+<p>Métodos estáticos não são diretamente acessíveis utilizando-se <code>this </code>a partir de métodos não estáticos. É necessário chamá-los usando o nome da classe:</p>
+
+<pre class="brush: js">nomeDaClasse.nomeDoMetodoEstatico()</pre>
+
+<p>ou chamando o método como uma propriedade do construtor:</p>
+
+<pre class="brush: js">this.constructor.nomeDoMetodoEstatico().</pre>
+
+
+
+
+
+<pre class="brush: js"><code>class ChamadaDoMetodoEstatico {
+  constructor() {
+    console.log(ChamadaDoMetodoEstatico.MetodoEstatico());
+    // 'O método estático foi chamado.'
+
+    console.log(this.constructor.MetodoEstatico());
+    // 'O método estático foi chamado.'
+  }
+
+  static MetodoEstatico() {
+    return 'O método estático foi chamado.';
+  }
+}</code></pre>
+
+
+
+
+
+<h2 id="Exemplos">Exemplos</h2>
+
+<p>O exemplo a seguir demonstra várias coisas. Ele mostra como um método estático é implementado em uma classe e como uma classe com um membro estático pode virar uma subclasse. Por fim, ele mostra como um método estático pode e não pode ser chamado.</p>
+
+<pre class="brush: js">class Tripple {
+ static tripple(n) {
+ n = n | 1;
+ return n * 3;
+ }
+}
+
+class BiggerTripple extends Tripple {
+ static tripple(n) {
+ return super.tripple(n) * super.tripple(n);
+ }
+}
+
+console.log(Tripple.tripple());
+console.log(Tripple.tripple(6));
+console.log(BiggerTripple.tripple(3));
+var tp = new Tripple();
+console.log(tp.tripple()); //Logs 'tp.tripple is not a function'.</pre>
+
+<h2 id="Especificações">Especificações</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Especificação</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comentário</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Definição inicial.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilidade_com_os_navegadores">Compatibilidade com os navegadores</h2>
+
+
+
+<p>{{Compat("javascript.classes.static")}}</p>
+
+<h2 id="Veja_também">Veja também</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/class"><code>class</code> expression</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/class"><code>class</code> declaration</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Classes">Classes</a></li>
+</ul>