Fala ai Alan, tudo bem? Vamos lá:
Não entendo a logica de se ter um contador, se é um formulário e o usuário ficará cadastrando manualmente os seus campos. Porque preciso de um contador para guardar em cache os IDs?
A necessidade de ter uma variável contador é para guardar o valor atual da sua contagem, pois sempre quando incrementar algo, você precisa pegar o valor atual e somar + 1.
Sim, poderia ser feito sem o contador, poderíamos ler o conteúdo da página, parsear para inteiro e incrementar, algo do tipo:
incrementa() {
const p = document.querySelector('#p1')
p.textContent = parseInt(p.textContent, 10) + 1;
}
Mas, cada um prefere fazer de um jeito, eu particularmente prefiro o jeito com a variável contador
.
Outro ponto é, se um desenvolvedor alterar o nome da função que esta vinculada ao evento "onclick" por exemplo no JS, não terá que ser alterado no HTML do mesmo jeito?
Sim, se você trocar o nome da função vai precisar atualizar o HTML, você poderia fazer o bind do evento no constructor
da sua classe:
constructor() {
this._contador = 0;
alert(this._contador);
const btn = document.querySelector(SELETOR)
if (btn) {
btn.addEventListener('click', this.incrementa)
}
}
Algo mais ou menos assim, porém, seu JavaScript vai precisar buscar elemento na página, isso vai consumir mais tempo, processamento e memória da máquina.
De novo, vai muito do gosto pessoal de cada um. Nesse exemplo eu prefiro fazer através do JavaScript a associação do evento.
Espero ter ajudado.