1
resposta

[Bug] No caso para a função

function User(nome, email) {
    this.nome = nome
    this.email = email
    this.exibeInfos = function() {     // function
        return `${nome}, ${email}`
    }
}

const newUser = new User('Mariana', 'm@m.com')
console.log(newUser)
console.log(newUser.exibeInfos())

// Saida esperada:
{/*
User {
  nome: 'Mariana',
  email: 'm@m.com',
  exibeInfos: [Function (anonymous)]
}
Mariana, m@m.com
*/}
1 resposta

Oi, Carlos! Como vai?

Seu exemplo mostra bem o uso de uma função construtora para criar objetos com new. Um ponto interessante é que dentro de exibeInfos() você usou ${nome} e ${email}. O código funciona porque os valores vêm dos parâmetros da função, mas o mais comum em objetos é usar this para acessar as propriedades do próprio objeto, deixando o comportamento mais claro e consistente.

Uma dica interessante para o futuro é usar métodos do objeto sempre com this, assim eles sempre acessam os dados da instância criada. Veja este exemplo:


function User(nome, email) {
  this.nome = nome
  this.email = email

  this.exibeInfos = function() {
    return this.nome + ", " + this.email
  }
}

const newUser = new User("Mariana", "m@m.com")
console.log(newUser.exibeInfos())

Nesse código, this.nome e this.email acessam diretamente as propriedades do objeto criado, garantindo que o método sempre use os dados corretos da instância.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!