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 =)