3
respostas

Como fazer com que o atributo privado com '#' seja mostrado no console. log?

Olá! Vi que o uso do '#' para definir uma propriedade privada já foi oficializada. Eu gostaria de saber como posso fazer com que o valor atribuída a ela (#saldo), seja mostrado no console.log do index. Consegui chegar em apenas uma solução, mas não fiquei satisfeito com ela:

(Usei apenas o saldo com o '#' para facilitar no estudo)

// Código de Conta.js

#saldo = 10;

    getSaldo () {
        return this.#saldo
    }

    constructor (tipo, cliente, agencia) {
        this._cliente = cliente;
        this._agencia = agencia;
        this._tipo = tipo;
        Conta.numeroDeContas += 1;
        this.numeroDaConta = "Conta Número: " + Conta.numeroDeContas;
      } 
//Código de console no index.js

const ContaPoupanca1 = new Conta("corrente", cliente1, 101);

console.log(ContaPoupanca1);
console.log(ContaPoupanca1.getSaldo());

Então minhas dúvidas são:

1 -- Tenho mesmo que usar um console.log para CADA atributo privado ('#') que eu queira ver no index?

2 -- Eu não posso fazer com que o valor do atributo privado ('#') seja definido no Constructor apenas uma vez quando abrir a conta?

Ex: constructor(atributoPrivado, cliente, conta)

Passei a manhã toda tentando achar um meio no StackOverflow e no doc do JS, mas até agora realmente parece que o único meio é usar os Getters e Setters

3 respostas

ola sendo um atributo privado a única maneira de chamar eles e pelo getters e setters mesmo por isso são privados caso ao contrario não precisaria ser um privado, esse é o papel do #

Olá Yuri, tudo bem?

Essa também foi uma dúvida minha.

Para você consultar atributo privado, igual o Bruno disse, você tem que criar um getter.

class Conta {
    #saldo;

    constructor(agencia, cliente, saldoInicial, tipo) {
        this.#saldo = saldoInicial;
    }

    get saldo() {
        return this.#saldo;
    }
}

Isso vai permitir que através do console.log você consulte o atributo privado. Do contrário, ele fica "invisível".

console.log(contaPoupancaRicardo.saldo); // 150

Forte abraço!

Acho que os navegadores nao estao aceitando o # isso pode ser consultado em https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes

O que estão achando dessas aulas desse professor? Acho que nao temos muito o que praticar aqui, sinto falta de exercicios e correção rsrs