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

Erro aula 04 - video 02

Flávio, fiz o vídeo até o final mas está apresentando um erro que não estou sabendo resolver. Pode ser que seja um detalhe errado .

Está apresentando erro na instrução console.log(negociacao.data); //ou console.log(helper.dataParaTexto(negociacao.data));

Erros: "Negociacao.js:24 Uncaught TypeError: data.getTime is not a function at Negociacao.get data [as data] "

Seguem os códigos:

class Negociacao {

    constructor(data, quantidade, valor) {

        this._data = new Date(data.getTime());
        this._quantidade = quantidade;
        this._valor = valor;

        Object.freeze(this);
    }

    get volume() {
        return this._quantidade * this._valor;
    }

    get data(){
        return new Date(data.getTime());
    }

    get quantidade(){
        return this._quantidade;
    }

    get valor() {
        return this._valor;
    }
}
class NegociacaoController {
  constructor(){
      let $ = document.querySelector.bind(document);        
      this._inputData = $('#data');
      this._inputQuantidade = $('#quantidade');
      this._inputValor = $('#valor');
  }

  adiciona(event) {
    event.preventDefault();

    let helper = new DateHelper();

    let negociacao = new Negociacao(
      helper.textoParaData(this._inputData.value),
      this._inputQuantidade,
      this._inputValor
    );

    console.log(negociacao);
    console.log(negociacao.data);
    console.log(helper.dataParaTexto(negociacao.data));
  }
}
class DateHelper {
    dataParaTexto(data) {
        return data.getDate()
            + '/' + (data.getMonth() + 1)
            + '/' + data.getFullYear();
      }

    textoParaData(texto) {
        return new Date(...texto.split('-').map((item,indice) => item - indice % 2));
    }
}
4 respostas
solução!

Olá meu aluno, dá uma olhadinha nessa linha:

get data(){
    return new Date(data.getTime());
}

Você esta criando uma nova data, certo? Mas percebe como tentou acessar a data da instância?

O corretinho é:

get data(){
    return new Date(this._data.getTime());
 }

Tranquilo meu aluno, futuro cangaceiro?

Eu descobri rápido porque a mensagem de erro indica a linha e o arquivo. Olhando essa linha, como é algo undefined no nome, é porque um método foi chamado em algo que não existe.

Como o tempo você vai pegando esse traquejo de cangaceiro para detectar erros em seu código.

Sucesso e bom estudo meu aluno!

Amazing Flávio. Você é o cara! Sabia que era uma vacilada. Não sei pq isso estava assim. Ainda tenho que pegar esse traquejo para debugar em javascript. Para alguém de Java é novo paradigma. Gostaria de agradecer sua rápida resposta, de forma clara e pessoal. Abraços!

Tranquilo Jan! Ainda há dois cursos pela frente para você ficar melhor do que já é em JavaScript.

Sucesso e bom estudo meu aluno!