1
resposta

Passando arrow function pelo prototype | console.log não mostra a função passada pelo prototype?

function Cliente(nome, cpf, email, saldo) {
    this.nome = nome;
    this.cpf = cpf;
    this.email = email;
    this.saldo = saldo;
    this.depositar = (valor) => (this.saldo += valor); //aqui funciona arrow function
}

const Andre = new Cliente("André", "12312312345", "email@com.br", 100);
//console.log(Andre);

Andre.depositar(200); //acessando a funçao dentro do protótipo
//console.log(andre);

function ClientePoup(nome, cpf, email, saldo, saldoPoup) {
    Cliente.call(this, nome, cpf, email, saldo);
    this.saldoPoup = saldoPoup;
}

const Ju = new ClientePoup("Ju", "12312312345", "email@com.br", 100, 500);
console.log(Ju);


//ClientePoup.prototype.depositarPoup = valor => this.saldoPoup += valor

ClientePoup.prototype.depositarPoup = function (valor) { //acessando pelo protótipo nao da pra usar arrow function?
    this.saldoPoup += valor;
};


Ju.depositarPoup(500)
console.log(Ju.saldoPoup);
console.log(Ju)

Estava seguindo as aulas e praticando percebi que acessando o obj pelo .prototype eu não consigo resultados usando arrow function, somente com a declaração da função anonima. Porém explorando os resultados do console.log pra tentar entender a lógica vi que de nenhuma das formas entra a função no objeto. Por mais que eu consiga usar a função. A duvida é, pra onde ela vai? Vai pro primeiro cliente?

1 resposta

Olá Gabriel, tudo bem?

Peço desculpa pela demora para responder o seu tópico.

No seu código, você está definindo uma função normal no protótipo do objeto ClientePoup e está conseguindo acessá-la normalmente. No entanto, quando tenta utilizar uma arrow function, ela não é adicionada ao objeto. Isso ocorre porque arrow functions não possuem um escopo próprio para o this, e sim herdam o escopo do local onde foram criadas.

Sobre a sua pergunta "pra onde ela vai?", a resposta é que a função não vai para lugar nenhum. Ela simplesmente não é adicionada ao objeto.

Espero ter ajudado a esclarecer suas dúvidas. Se tiver mais alguma pergunta, é só perguntar!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.