1
resposta

Por que se deve colocar os métodos no constructor de NegociacaoController?

Gostaria de entender melhor o por que de ter que colocar as mesmas aplicações que contém no método "adiciona" no construtor da classe NegociacaoController

1 resposta

Salve, Henrique!

Consegue explicar melhor a sua dúvida?

Vamos analisar aqui o que temos no construtor:

    constructor() {

        let $ = document.querySelector.bind(document);
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');
        this._listaNegociacoes = new ListaNegociacoes();

        this._negociacoesView = new NegociacoesView($('#negociacoesView'));
        this._negociacoesView.update(this._listaNegociacoes);

        this._mensagem = new Mensagem();
        this._mensagemView = new MensagemView();

    }

E no método adiciona:

adiciona(event) {

    event.preventDefault();
    this._listaNegociacoes.adiciona(this._criaNegociacao());
    this._negociacoesView.update(this._listaNegociacoes);

    this._mensagem.texto = 'Negociacao adicionada com sucesso';
    this._mensagemView.update(this._mensagem);  

    this._limpaFormulario();
}

Perceba que o método adiciona utiliza as propriedates que foram definidas no construtor, mas não fazer a mesma coisa.

Quanto construimos a controller, nós criamos as propriedades privadas (por convenção, propriedades privadas tem o nome iniciado pelo _) :

  • _inputData
  • _inputQuantidade
  • _inputValor
  • _listaNegociacoes
  • _negociacoesView
  • _negociacoesView
  • _mensagem
  • _mensagemView

Isto feito, dentro do método adiciona, nós conseguimos utilizar essas propriedades da seguinte firma:

 this._listaNegociacoes.adiciona(this._criaNegociacao());

Espero que eu tenha te ajudado de alguma forma!

Bons estudos.