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();
}
}