1
resposta

Método de encapsulamento getVolume()

Não entendo o motivo, no console ao chamar o getVolume() imprime um NaN

index.html

    <script>
        //É possível criar duas instâncias de Negociacao e modificar os seus atributos
        var n1 = new Negociacao(Date(), 10, 30);
        console.log(n1.getData());
        console.log(n1.getQuantidade());
        console.log(n1.getValor());
        console.log(n1.getVolume());
    </script>

Negociacao.js

    class Negociacao{

        constructor(data, quantidade, valor){

            this._data = data;
            this._quantidade = quantidade;
            this._valor = valor;//            
        }

        getVolume(){

            return this.quantidade * this.valor;

        }
        getData(){//É usado o método de encapsulamento

            return this._data;

        }

        getQuantidade(){

            return this._quantidade;

        }
        getValor(){

            return this._valor;

        }
    }
1 resposta

Boa noite, Grasiela! Como vai?

Isso está acontecendo pois dentro do método getVolume() vc está fazendo return this.quantidade * this.valor! Contudo, observe que os atributos da sua classe se chamam respectivamente _quantidade e _valor! Sendo assim, o correto seria fazer return this._quantidade * this._valor!

Para saber mais: Como quantidade e valor não existem, o JavaScript atribui a eles o valor undefined. Daí, quando vc tenta fazer this.quantidade * this.valor, o que o JavaScript faz por baixo dos panos é undefined * undefined. Mas sendo essa uma multiplicação de valores que não são números, o JavaScript retorna NaN que é a abreviação de not a number!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!