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

Por que usar o prototype?

Por que adicionar a função ao prototype e não direto no objeto?

ClientePoupanca.prototype.depositaPoup = function ...

Por que não usar:

ClientePoupanca.depositaPoup = function ... ?

Fiquei com essa dúvida, gostaria de entender a diferença entre as implementações.

Edit:

Acho que entendi...ClientePoupanca é uma função...então teria que ser ju.depositaPoup = function, etc Mas se quiser adicionar na função dai usa o prototype certo?

2 respostas
solução!

Oi Guilherme, tudo bem?

Todo objeto em Javascript possui um protótipo (prototype), que permite modificar esse objeto, criando novas propriedades ou métodos, por exemplo.

Vamos imaginar que temos uma classe chamada User e estamos instanciando dois novos objetos:

class User {
   constructor() {
       this.nome = 'Leonardo';
       this.profissao = 'Desenvolvedor';
     }
}

const user1 = new User();
user1.idade = 22;
console.log(user1.idade); // irá retornar 22

const user2 = new User();
console.log(user2.idade); // undefined

Veja que o usuário 1 possui a propriedade idade, pois adicionamos diretamente no objeto user1, porém o usuário 2 não possui essa idade definida, por isso retorna undefined. Mas, como podemos adicionar essa propriedade idade na nossa classe, para que todas as instâncias possuem essa propriedade? Através do prototype, veja abaixo:

class User {
   constructor() {
       this.nome = 'Leonardo';
       this.profissao = 'Desenvolvedor';
     }
}

User.prototype.idade = 22;

const user1 = new User();
console.log(user1.idade); // irá retornar 22

const user2 = new User();
console.log(user2.idade); // irá retornar 22 também

Agora, nós adicionamos uma propriedade à classe "User" através do prototype, fazendo com que todas as instâncias dessa classe receba também essa propriedade. Por isso nós usamos o prototype, para referenciar o protótipo do nosso objeto. Lembrando que no Javascript, quase tudo é objeto!

Espero ter ajudado, bons estudos =)

Ajudou sim, muito obrigado!