// 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()

Método dentro da função da classe:

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.

Método fora da função da classe (Prototype):

Vantagem:

Desvantagem

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