Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Por que dentro da CLASS ContadorControle {} não escrevemos function, só passamos o contador()

Prezados, estou com uma duvida em relação a CLASSE do JS.

class ContadorController {

    constructor() {
        this._contador = 0;
        alert(this._contador);
    }

    get contador() {
        return this._contador;
    }

    incrementa() {
        this._contador++;
        document.querySelector('#p1').textContent = this._contador;

o INCREMENTA () é uma função ? pq quando declaramos ele dentro da CLASS, não escrevemos function incrementa () ?

Sei que o professor falou sobre isso, mas não peguei a ideia muito bem. Isso está me deixando confuso quando usar uma function, se uso fora ou declaro dentro igual feito acima.

2 respostas
solução!

Olá! Tudo bem? Nesse caso, incrementa() é um método. Métodos e funções tem a mesma função: reutilizar código; a diferença é que métodos pertencem a uma classe enquanto funções são independentes. Essa abordagem que utiliza classes se chama Orientação a Objetos que une as informações com a parte lógica, como nessa classe ContadorController, a informação de qual é a contagem anda junto com a lógica de aumentar o contador. A mesma funcionalidade pode ser feita usando a abordagem Funcional:

let contador = 0;
alert(contador);

function incrementa() {
    contador++;
    document.querySelector("#p1").textContent = contador;
}

Nesse caso o contador fica exposto completamente, podendo ser alterado por qualquer função. No caso da Classe o contador se torna um atributo que deve ser acessado só pela própria classe e seus métodos, assim nós podemos ter uma garantia maior de que o nosso código vai ser usado do jeito que estamos esperando. Então resumindo: Funções são independentes, escritas fora de classes, enquanto métodos dependem de uma classe e normalmente fazem operações envolvendo os atributos dessa classe. Espero ter ajudado!

Muito obrigado Breno, esclareceu muito bem a minha duvida!!!! :)