From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../javascript/reference/classes/static/index.html | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 files/pt-br/web/javascript/reference/classes/static/index.html (limited to 'files/pt-br/web/javascript/reference/classes/static/index.html') 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 +--- +
{{jsSidebar("Classes")}}
+ +

A palavra chave static 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.

+ +

Sintaxe

+ +
static nomeDoMetodo() { ... }
+ +

Descrição

+ +

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.

+ +

Chamada de métodos estáticos

+ +

De outro método estático

+ +

Para chamar um método estático dentro de outro método estático da mesma classe, podemos utilizar a palavra reservada this.

+ + + +
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'
+
+ +

De outro construtor e outros métodos

+ +

Métodos estáticos não são diretamente acessíveis utilizando-se this a partir de métodos não estáticos. É necessário chamá-los usando o nome da classe:

+ +
nomeDaClasse.nomeDoMetodoEstatico()
+ +

ou chamando o método como uma propriedade do construtor:

+ +
this.constructor.nomeDoMetodoEstatico().
+ + + + + +
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.';
+  }
+}
+ + + + + +

Exemplos

+ +

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.

+ +
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'.
+ +

Especificações

+ + + + + + + + + + + + + + +
EspecificaçãoStatusComentário
{{SpecName('ES2015', '#sec-class-definitions', 'Class definitions')}}{{Spec2('ES2015')}}Definição inicial.
+ +

Compatibilidade com os navegadores

+ + + +

{{Compat("javascript.classes.static")}}

+ +

Veja também

+ + -- cgit v1.2.3-54-g00ecf