Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Obtenção do date no construtor e outra abordagem para o Date

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.

2 respostas
solução!

Boa tarde.

Você está chamando _mapFormObj() no construtor, o que não faz sentido porque você está criando um objeto com os dados do formulário e sequer deu chance para que o usuário entre com os dados.

Pegou a ideia?

Sobre criar um novo tipo para encapsular a data e criar métodos especializados: a ideia é boa e bem orientada a objeto.

Blz meu aluno ? Sucesso e bom estudo!

Típico de programador apressado :) mal começa o primeiro método já quer o resultado :D

Fiz uma retificação no código agora funcionou. Coloquei o map no lugar certo. No adiciona eventos. Os outros método que manipulem os dados podem fazer uso dele.

Quanto ao date é para gerar uma discussão entre que paradigma aplicar neste caso um funcional como você abordou (mais direto) ou um OO ( mais especializado).

Valeu pela correção e pela opinião!