2
respostas

Dúvida relacionado ao ciclo de vida de um objeto em JS

Class: TesteController

class TesteController {
    constructor() {
        alert('Objeto sendo criado');
        let $ = document.querySelector.bind(document);

        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');

        console.log(this._inputData.value);
        console.log(this._inputQuantidade.value);
        console.log(this._inputValor.value);
    }

    add(event) {
        event.preventDefault();
        alert('Function action...');
        console.log(this._inputData.value);
        console.log(this._inputQuantidade.value);
        console.log(this._inputValor.value);
    }
}

Trecho código da view

<script src="js/app/controllers/TesteController.js"></script>
<script>
  let testeController = new TesteController();
</script>

No trecho acima estou 'importando' a classe no html/view em seguida estou instanciando-a, nesse momento o construtor é executado contudo à atribuindo os valores do DOM as variáveis/atributos this.inputData, this.inputQuantidade e this._inputValor.

Com isso vem a minha dúvida, no formulário coloquei o evento onsubmit para chamar o método add da class TesteController

<form class="form" onsubmit="testeController.add(event)">

Como podemos ver o método apenas imprime no console os valores dos atributos da class. E pela minha supresa ele exibe os valores informado no formulário, porém apenas o construtor dentro da classe faz essa atribuição e como o objeto já foi instanciado o mesmo não é reexecutado. Gostaria de saber como funciona essa transação?

Trecho de código da class TesteController.js

add(event) {
        event.preventDefault();
        alert('Function action...');
        console.log(this._inputData.value);
        console.log(this._inputQuantidade.value);
        console.log(this._inputValor.value);
    }

Peço desculpas se não fui capaz de externar a minha dúvida de forma clara.

2 respostas

Boa tarde, João! Como vai?

Não entendi mto bem! Vc fez a submissão do formulário e os valores foram exibidos corretamente pelo console.log()? E a sua dúvida é o motivo disso acontecer?

Se você esta com dúvida do porque a função add(event) consegue pegar os valores atuais dos inputs, isso se deve que seus atributos estão apontando para os campos de input do DOM, e não salvando os valores em si nos atributos, esta era sua dúvida?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software