Usando a ética nas classes JavaScript ES6

Neste artigo, saberemos como trabalhar com os alunos em classes ES6, a versão recente do padrão JavaScript. Vamos aprender como criar métodos e propriedades estáticas também, embora você verá que, para o caso das propriedades, teremos que ser inútil de algum tripe adicional.

Na verdade, não é nosso objetivo introduzir O conceito de estática, porque é uma razão para estudar em detalhes em artigos anteriores como explicações de métodos e atributos estáticos. No entanto, diremos que os membros estáticos das classes em programação orientada para objetos são atributos e métodos que dependem diretamente de uma classe, em vez de dependendo de um determinado objeto. Quando depende da classe, eles não estão associados a um objeto, então compartilham o valor para toda a turma, independentemente das instâncias que foram criadas.

Nós já comentamos que com a recente Versão do JavaScript Es6 Agora temos aulas, embora não sejam exatamente as mesmas que em outras línguas mais tradicionais. No caso de estática, não há alterações no conceito, mas por não ser capaz de declarar atributos de instância, não podemos declarar atributos estáticos. Vamos ver calmamente, embora antes de começarmos com os métodos estáticos.

Definir métodos estáticos no ES6

Um método estático é construído simplesmente indicando a palavra “estática” antes do nome do método que está sendo criado. O restante da definição de um método estático seria o mesmo que a definição de um método convencional, com exceção de ter a variável “isto” como geralmente nos métodos.

no exemplo a seguir que temos Uma classe chamada “Sumário” que possui um método declarado estático, para adicionar os valores de uma matriz.

class Sumatorio { static sumarArray(arrayValores) { let suma = 0; for(let valor of arrayValores){ suma += valor } return suma; }}

O método estático depende diretamente da classe , para que usemos sua própria classe para invocar.

Nota: o fato de não ser capaz de ter “este” dentro de um método estático é Porque o método não é invocado em relação a qualquer objeto. Como você viu, usamos o nome da classe para invocar e não um objeto instantâneo. Como você sabe, “esta” tem uma referência ao objeto em que uma mensagem foi lançada (o objeto em que um método foi chamado). Como tal objeto de invocação, não há objeto em “isso”. Em princípio, poderíamos pensar que “isso” valerá a pena “indefinido”, mas o que é realmente o código da própria classe.

Os métodos estáticos podem servir para muitas coisas. É a razão pela qual eles às vezes são usados como uma gaveta de utilitários que podem ter a ver com uma aula. Pensando em objetos Você tem que ter cuidado com o que e como eles são usados. O exemplo passado de Sumararray () não foi muito bom da filosofia de orientação de objetos, mas no exemplo a seguir, temos um método estático um pouco melhor.

Temos uma data de data que nos atende a criar Datas em javascript. É verdade que o JavaScript já contém uma determinada classe, mas tem a possibilidade de criar datas e tempos e talvez precisemos apenas datas e queremos uma série de utilitários adicionais que não estão incluídos na interface de data original.

Em nosso exemplo, você observará que temos um construtor, que recebe o dia, mês e ano. No entanto, na prática, muitas vezes as datas são criadas com o dia atual. À medida que a sobrecarga de métodos no JavaScript não existe e, portanto, não podemos sobrecarregar os construtores, poderíamos distribuir os métodos estáticos para criar uma espécie do construtor de data sem parâmetros que retornassem uma data de objeto inicializada com o dia atual.

class Fecha { constructor(dia, mes, ano) { this.dia = dia; this.mes = mes; this.ano = ano; } static hoy() { var fecha = new Date(); var dia = fecha.getDate(); var mes = fecha.getMonth() + 1; var ano = fecha.getFullYear(); return new Fecha(dia, mes, ano); }}

Como você pode ver, o método estático hoje () é responsável por obter os valores atuais, mensagens e anos e invocando o construtor com esses dados, retornando o Objeto que acaba de ser criado.

Outro exemplo do método estático ou método de classe

Continuamos com um segundo exemplo de método estático ou método de classe. Agora achamos dentro do quadro de uma classe de coordenadas,

class Coordenada { constructor(x, y) { this.x = x; this.y = y; } static coordenadaOrigen() { return new Coordenada(0,0); }}

no código anterior que você tem um exemplo de método estático, chamado Coordinarigen (), que retorna Uma nova instância de um objeto da classe de coordenadas, com seus brancos xey igual a zero.

Esse é um método de classe, então teremos que usar a própria classe para acessá-la.

Atributos estáticos do ECMAScript 2015

A definição de propriedades estáticas ou propriedades de classe, não é tão direta quanto a definição de métodos estáticos, uma vez que no ES6 você pode Não defina propriedades como feita em outras linguagens de programação mais tradicionais.

No ecmascript 2015 (ES6), temos a limitação de não ser capaz de declarar atributos na classe (temos que gerá-los no construtor ou nos métodos). Isso também se estende aos atributos de classe ou atributos estáticos. No entanto, você sempre pode montar algum mecanismo para alcançá-lo.

Por exemplo, no caso de ter atributos de classe estática que têm valores comuns para toda a classe, poderíamos fazer uso do getter, colocando o Palavra estática ao definir o método GET.

class Circulo { static get pi() { return 3.1416 }}

Podemos acessar “PI” como se fosse uma propriedade estática, dependente diretamente da classe. Nós usamos diretamente do nome da classe:

console.log(Circulo.pi);

Se o que queremos é uma variável estática, que é global para toda a turma, com um valor que não depende dos casos e que podem variar ao longo do tempo, poderíamos fazer algo assim:

class Test {} Test.variableStatic = 'Algo que guardo en la clase';

como javascript é tão permissivo, podemos associar uma propriedade para a classe simplesmente atribuindo qualquer valor. Eu não gosto muito do exemplo, porque a definição da propriedade estática estaria fora do código da própria classe e, portanto, em uma leitura para esse código, não poderíamos perceber que essa variável estática é criada posteriormente.

No exemplo típico de criar uma variável estática que leva a conta das instâncias criadas a partir de uma classe, poderíamos optar por algo assim (que eu gosto mais por ter a criação de propriedade estática dentro do construtor).

class Habitante { constructor(nombre) { this.nombre = nombre; if(Habitante.contador) { Habitante.contador++; } else { Habitante.contador = 1; } }}

O problema aqui é que apenas esta propriedade estática existirá a partir da primeira instanciação de um objeto. Então, outro exemplo um pouco mais convoluído poderia ser o próximo, o que faz uso do getter e do setter dos objetos javascript.

class Habitante { static get contador() { if(Habitante.contadorPrivado) { return Habitante.contadorPrivado; } return 0; } static set contador(valor) { Habitante.contadorPrivado = valor; } constructor(nombre) { this.nombre = nombre; if(Habitante.contador) { Habitante.contador++; } else { Habitante.contador = 1; } } }

Como você pode ver, Habitant.Contact é a nossa propriedade estática, que estaria disponível graças ao getter e no setter como se fosse um atributo normal (apenas que é estático porque é previsto de “estática”).

em o construtor que usamos de habitante.Contact como se fosse um atributo normal, apenas internamente na implementação da classe Essas propriedades são realmente calculadas com funções obtidas e configuradas.

é um código meramente experimental , mas pode dar uma ideia das coisas que podem ser feitas em Javascript quando “você retornou” uma pequena linguagem. Saiba mais sobre Get and Sets neste artigo.

Conclusão sobre os membros da classe em ES6

Aprendemos coisas interessantes sobre a criação de classes, ou membros estáticos, nas aulas ES6. Como você conseguiu ver, há algumas particularidades dadas pela linguagem Javascript, que é importante para saber.

No próximo artigo do manual ES6 continuaremos falando sobre as aulas, abordando algo tão importante como a herança das aulas em Javascript.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *