1
resposta

Privar com #

Boa tarde, eu acabei viajando um pouco e fazendo mais do que o código proposto em aula, e não consigo utilizar a convenção de # para privar, teria alguma maneira de eu utilizar dentro desse meu código?

class Cliente{
    constructor(_nome, _cpf){
        this._nome = _nome;
        this._cpf = _cpf;
    }
}

class ContaCorrente{
   constructor(_numero, _agencia, _saldo){
        this._numero = _numero;
        this._agencia = _agencia;
        this._saldo = _saldo;
    }
    saque(valor){
        if(this._saldo >= valor){
            this._saldo -= valor;
            console.log(`Seu saldo atual é de ${this._saldo}R$.`);
        }
        else{
            console.log(`Saldo insuficiente.\nSeu saldo atual é de ${this._saldo}R$.`);
        }
    }
    deposito(valor){
        if(valor > 0){
            this._saldo += valor;
            console.log(`Seu saldo atual é de ${this._saldo}R$.`);    
        }
        else{
            console.log("ERROR");
        }
    }
    transfere(valor, destinatario){
        if(valor > 0){
            this._saque(valor);
            destinatario.deposito(valor);
       }
        else{
            console.log("ERROR");
        }
    }
}

const cliente1 = new Cliente("Victor", 37944948819);
const cliente2 = new Cliente("joão", 37944948819);

const contaCliente1 = new ContaCorrente (48752462, "001", 100);
const contaCliente2 = new ContaCorrente (48578547, "001", 0);

console.log(contaCliente1.saldo);
console.log(contaCliente2.saldo);

contaCliente1.transfere(10, contaCliente2);

console.log(contaCliente1.saldo);
console.log(contaCliente2.saldo);
1 resposta

Boa noite!

Você poderia tentar algo do gênero(reduzi seu código para exemplificar):

class Cliente{
    #nome
    #cpf
    constructor(nome, cpf){
        this.#nome = nome;
        this.#cpf = cpf;
    }

    get nome(){
        return this.#nome
    }

    get cpf(){
        return this.#cpf
    }


}



const cliente1 = new Cliente("Victor", 37944948819);
const cliente2 = new Cliente("joão", 37944948819);

console.log(cliente1.nome, cliente2.cpf)

Com o indicador de variável privada #, aparentemente, você só consegue acessar a variável literalmente chamando o método de acesso get. Se você tentar dar um console.log(cliente1), por exemplo, retornará os campos vazios.

Um abraço!