diff options
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.html | 131 |
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> |