Oi, Luidi! Tudo bem?
No JavaScript, todos os objetos têm um 'modelo' chamado protótipo, ele é como uma 'caixa de ferramentas' que o objeto pode usar. Ou seja, se você tentar acessar algo no objeto e ele não tiver, ele vai olhar nessa caixa de ferramentas (o protótipo) para ver se encontra e é assim que os objetos 'herdam' funcionalidades.
Agora, pense nas funções construtoras (funções usadas para criar objetos) como se fossem 'fábricas'! Essas funções têm uma propriedade especial chamada prototype, que é como um plano onde você coloca ferramentas e funcionalidades que todas as instâncias (os objetos criados pela fábrica) vão compartilhar. Ou seja, você não precisa repetir o mesmo código para cada objeto, todos pegam essas ferramentas do mesmo lugar.
Um exemplo prático é:
// Função construtora: 'Carro' é uma fábrica de carros
function Carro(marca) {
this.marca = marca; // Cada carro tem sua própria marca
}
// Adicionamos um método no protótipo da função
Carro.prototype.andar = function () {
console.log(this.marca + " está andando!");
};
// Criamos dois carros
const carro1 = new Carro("Toyota");
const carro2 = new Carro("Honda");
// Ambos podem usar o método 'andar' do protótipo
carro1.andar(); // Toyota está andando!
carro2.andar(); // Honda está andando!
Aqui, o método andar não está duplicado em cada carro, ele fica no protótipo, assim todos os carros podem usá-lo, economizando memória e organizando o código.
Espero ter ajudado! Caso tenha restado alguma dúvida em relação a qualquer conteúdo do curso ou atividade, não hesite em perguntar, estou disponível e ficarei super feliz em poder ajudar!
Um forte abraço e bons estudos!