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