1
resposta

Prototypes

Pessoal, eu prefiro usar prototypes ao invés dos helpers indicados na aula. Claro que não sei se é melhor para todos os exemplos, mas para os indicados eu acho. E muitos outros tb. Saberiam informar algum problema que isto pode causar?

        String.prototype.textoParaData = function() {
            return new Date(...this.split('-').map((item, indice) => indice == 1 ? item - 1 : item ));
        };


        Date.prototype.dataParaTexto = function() {
            return this.getDate().toLocaleString('pt-BR', {minimumIntegerDigits: 2, useGrouping:false})
                + '/' + ( this.getMonth() + 1 ).toLocaleString('pt-BR', {minimumIntegerDigits: 2, useGrouping:false})
                + '/' + this.getFullYear();
        }

        console.log('2020-05-23'.textoParaData());
        console.log(new Date().dataParaTexto());

De quebra eu coloquei um exemplo de como colocar zeros a frente do mês e dia (toLocaleString). E esse exemplo serve para number. Para string existe o método padStart().

1 resposta

Boa noite, Pedro! Como vai?

Na classe String é estranho ter uma função que retorna uma data a partir da string em questão. Afinal de contas nem sempre a string representará uma data. Então, conceitualmente adicionar o método textoParaData() ao prototype da classe String não faz sentido.

Já em relação à classe Date, ela já tem o método toString() e outros mais que retornam a data em formato texto.

Dessa forma, se o desejo é ter algum customizado, a solução que é mais adequada seria criar um helper mesmo. Ou no máximo sobrescrever o comportamento de um método já existente da classe, no caso da Date.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!