// definindo uma 'classe' pessoa
function Pessoa(nome, idade){
// atributos
this.nome = nome
this.idade = idade
// metodos
this.falar = function(){
console.log(`Meu nome e ${this.nome} e tenho ${this.idade} anos`)
}
}
//incluindo novo método para pessoa com prototype
Pessoa.prototype.puxarAssunto = function(){
console.log(`Tá quente né?`)
}
const pessoa1 = new Pessoa('Cleitinho', 13)
pessoa1.falar()
pessoa1.puxarAssunto()
Vantagem: O método falar tem acesso direto às variáveis nome e idade da instância, sem a necessidade de usar this.
Desvantagem: Cada instância da classe Pessoa terá sua própria cópia do método falar. Isso significa que se você criar 1000 instâncias de Pessoa, haverá 1000 cópias do método falar na memória, o que pode ser ineficiente.
Vantagem:
Pessoa compartilham a mesma cópia do método puxarAssunto. Isso significa que, independentemente do número de instâncias criadas, haverá apenas uma cópia do método na memória.Desvantagem
this, os métodos definidos no prototype não têm acesso direto às variáveis definidas na função construtora. Eles acessam essas variáveis através de this.<aside>
💡 Geralmente, a prática recomendada é definir métodos no prototype quando esses métodos não precisam ser redefinidos por instância e para economizar memória.
</aside>