Olá Flávio, 2 questões:
1) Que você acha desta abordagem? obs: Se for vista mais na frente, delete esta pergunta
class NegociacaoController {
constructor() {
let $qr = document.querySelector.bind(document);
this._inputData = $qr('#data');
this._inputQuantidade = $qr('#quantidade');
this._inputValor = $qr('#valor');
}
// mapeamento objeto
_mapFormObj() {
let data = new Date(...this._inputData
.value.split('-')
.map((item, indice) => item - indice % 2 ));
return new Negociacao(
data,
this._inputQuantidade.value,
this._inputValor.value
);
}
adiciona(event) {
event.preventDefault();
let negociacao = this._mapFormObj();
console.log(negociacao);
}
}
Repare que preferi criar um método de mapeamento que pode ser chamado tanto no construtor como em qualquer método de manutenção dos dados. Esta abordagem está dentro das boas práticas ou devemos deixar tudo no construtor mesmo?
2) Que você acha de montar uma classe tipo AluraDate para tratar estes caso? Seria uma solução mais OO do que funcional.
Supor que a data pudesse vir em vários formatos, poderia cadastrar um atributo dateMask (ex. dd/mm/yyyy) que já fizesse um parser da data de acordo com o formato específico da data. Repare que isto foi muito batido nestas 2 lições. Enfim isto é meio que uma dúvida e sugestão.