Prototype


Nota

JavaScript é baseado em prototypes (protótipos) para acessar propriedades e métodos de um objeto para outro, ou seja, é a forma da linguagem de trabalhar com POO.

Prototypes é um objeto, que é anexado automaticamente pelo JavaScript, nos objetos criados pela função construtora. No objeto prototype é armazenado os “moldes/modelos” para a replicar os métodos em todas as instâncias.

Todo objeto tem um referência interna para um protótipo ([objeto/instâncias].__proto__), que vem na propriedade prototype da função construtora ([nome da função construtora].prototype) utilizada para criá-lo.

Exemplo

function Pessoa(nome, sobrenome) {
  this.nome = nome;
  this.sobrenome = sobrenome;
  this.nomeCompleto = () => `${this.nome} ${this.sobrenome}`;
}
 
Pessoa.prototype.falar = "Olá";
 
const pessoa = new Pessoa("Luiz", "Otávio");
 
console.log(pessoa.falar); // Olá
 
console.dir(pessoa);
/*
Pessoa {       
  nome: 'Luiz',
  sobrenome: 'Otávio',
}
*/

Referências