Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Criei da forma mais funcional que consegui imaginar, quase 1 hora para conseguir

A resposta que consegui desenvolver sendo o mais funcional possível:

  • Os inputs:
  • Coloquei-os em um array para fácil leitura com apenas um array.map ou array.forEach
  • Método adiciona:
  • Passei os dados dos inputs direto para o construtor com o array.map e o rest parameters
class NegociacaoController {

    constructor() {
        let $ = document.querySelector.bind(document);

        this._inputs = [
            this._inputData = $('#data'),
            this._inputQuantidade = $('#quantidade'),
            this._inputValor = $('#valor')
        ];
    }

    ClearAndFocus() {
        this._inputs.forEach(
            item => this._inputs.indexOf(item) == 0 ? item.value = '' : item.value = 0
        );

        this._inputs[0].focus();
    }

    Adiciona(event) {
        event.preventDefault();

        let negociacao = new Negociacao(
            ...this._inputs.map(
                item => this._inputs.indexOf(item) == 0 ? new Date(item.value.split('-')) : item.value
            )
        );

        console.log(negociacao.Data + "\n" + negociacao.Quantidade + "\n" + negociacao.Valor);

       this.ClearAndFocus();
    }
}
1 resposta
solução!

Epitacio, bom dia!

Ótima solução! Eu acho interessante apontar dois pontos que valem a reflexão: 1- Passando os inputs para um array, como nós garantimos que o desenvolvedor irá lembrar o index de cada campo no array? Uma parte da programação é facilitar a leitura para o próprio desenvolvedor 2 - Por convenção nós usamos os métodos e variáveis em javascript em camelCase, assim fica mais claro para diferenciar de Classes.

Espero ter ajudado, continue assim e bons estudos!