aboutsummaryrefslogtreecommitdiff
path: root/files/pt-pt/web/javascript/reference/classes/static/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/pt-pt/web/javascript/reference/classes/static/index.html')
-rw-r--r--files/pt-pt/web/javascript/reference/classes/static/index.html131
1 files changed, 131 insertions, 0 deletions
diff --git a/files/pt-pt/web/javascript/reference/classes/static/index.html b/files/pt-pt/web/javascript/reference/classes/static/index.html
new file mode 100644
index 0000000000..9cb5c48367
--- /dev/null
+++ b/files/pt-pt/web/javascript/reference/classes/static/index.html
@@ -0,0 +1,131 @@
+---
+title: static
+slug: Web/JavaScript/Reference/Classes/static
+translation_of: Web/JavaScript/Reference/Classes/static
+---
+<div>{{jsSidebar("Classes")}}</div>
+
+<p>A palavra-chave <code><strong>static</strong></code> define um método estático para uma classe.</p>
+
+<div>{{EmbedInteractiveExample("pages/js/classes-static.html")}}</div>
+
+
+
+<h2 id="Síntaxe">Síntaxe</h2>
+
+<pre class="syntaxbox">static <em>nomeDoMetodo</em>() { ... }</pre>
+
+<h2 id="Descrição">Descrição</h2>
+
+<p>Métodos estáticos são chamados diretamente na classe mas não em instâncias da mesma. Estes são regularmente utilizados para criar funções utilitárias.</p>
+
+<h2 id="Como_chamar_métodos_estáticos">Como chamar métodos estáticos</h2>
+
+<h3 id="Noutro_método_estático">Noutro método estático</h3>
+
+<p>Para chamar um método estático dentro de outro que pertença à mesma classe, pode-se usar a palavra-chave <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/this">this</a></code>.</p>
+
+<pre class="brush: js">class StaticMethodCall {
+ static staticMethod() {
+ return 'Metodo estatico foi invocado';
+ }
+ static anotherStaticMethod() {
+ return this.staticMethod() + ' dentro de outro';
+ }
+}
+StaticMethodCall.staticMethod();
+// 'Metodo estatico foi invocado'
+
+StaticMethodCall.anotherStaticMethod();
+// 'Metodo estatico foi invocado dentro de outro'</pre>
+
+<h3 id="No_construtor_de_classe_e_noutros_métodos">No construtor de classe e noutros métodos</h3>
+
+<p>Métodos estáticos não são acessíveis através da palavra-chave <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/this">this</a></code> quando dentro de métodos não-estáticos. É preciso chamá-los ou através do nome da própria classe: <code>CLASSNAME.STATIC_METHOD_NAME()</code> ou como propriedade do construtor da classe: <code>this.constructor.STATIC_METHOD_NAME()</code>.</p>
+
+<pre class="brush: js">class StaticMethodCall {
+ constructor() {
+ console.log(StaticMethodCall.staticMethod());
+ // 'metodo estatico foi invocado.'
+
+ console.log(this.constructor.staticMethod());
+ // 'metodo estatico foi invocado.'
+ }
+
+ static staticMethod() {
+ return 'metodo estatico foi invocado.';
+ }
+}</pre>
+
+<h2 id="Exemplos">Exemplos</h2>
+
+<p>Os seguintes exemplos demonstram:</p>
+
+<ol>
+ <li>Como implementar um método estático numa classe.</li>
+ <li>Que se podem criar sub-classes a partir de uma classe com um membro estático (e usá-los).</li>
+ <li>Como se pode chamar um método estático (com contra-exemplos).</li>
+</ol>
+
+<pre class="brush: js">class Triple {
+ static triple(n) {
+ if (n === undefined) {
+ n = 1;
+ }
+ return n * 3;
+ }
+}
+
+class BiggerTriple extends Triple {
+ static triple(n) {
+ return super.triple(n) * super.triple(n);
+ }
+}
+
+console.log(Triple.triple()); // 3
+console.log(Triple.triple(6)); // 18
+
+var tp = new Triple();
+
+console.log(BiggerTriple.triple(3));
+// 81 (não foi afetado pela instanciação do pai)
+
+console.log(tp.triple());
+// 'tp.triple is not a function'. (não é função)
+</pre>
+
+<h2 id="Especificações">Especificações</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Especificação</th>
+ <th scope="col">Estado</th>
+ <th scope="col">Comentário</th>
+ </tr>
+ <tr>
+ <td>{{SpecName('ES2015', '#sec-class-definitions', 'Definições de Classe')}}</td>
+ <td>{{Spec2('ES2015')}}</td>
+ <td>Definição inicial.</td>
+ </tr>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-class-definitions', 'Definições de Classe')}}</td>
+ <td>{{Spec2('ESDraft')}}</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilidade_de_browsers">Compatibilidade de browsers</h2>
+
+
+
+<p>{{Compat("javascript.classes.static")}}</p>
+
+<h2 id="Ver_também">Ver também</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/class">expressão <code>class</code></a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/class">declaração <code>class</code></a></li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Classes">Classes</a></li>
+</ul>