Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Criação da função construtora Admin

Olá! Tudo bem?

Estou com uma dúvida se seria possível criar a função construtora Admin da seguinte forma:

function User(nome, email){
    this.nome = nome;
    this.email = email;
    this.exibirInfos = function(){
        return `${this.nome}, ${this.email}`
    }
};

function Admin(nome, email, role){
    User.call(this, nome, email)
    this.role = role || 'estudante'
}

Para depois criar uma instância desse objeto assim, podendo definir as propriedades quando for criar a instância: const novoAdmin = new Admin('Iury', 'meu@email.com', 'admin')

A minha dúvida vem porque no código da aula, são usados os seguintes comandos:

function User(nome, email){
    this.nome = nome;
    this.email = email;
    this.exibirInfos = function(){
        return `${this.nome}, ${this.email}`
    }
};

function Admin(role){
    User.call(this, 'Iury', 'meu@email.com')
    this.role = role || 'estudante'
}

const novoAdmin = new Admin('admin')

Só que dessa forma, já definindo o nome e o email na função construtora Admin, eu estaria limitando todas as instâncias dessa objeto terem o nome 'Iury' e o email 'meu@email.com', e conseguiria definir na criação apenas o role, certo? Então queria saber se naquela forma que mostrei primeiro está tudo correto, se pode ser usada desse jeito, ou se há alguma forma melhor de fazer isso.

Desde já, agradeço muito pela ajuda!

2 respostas
solução!

Oi!

A abordagem que você apresentou na primeira parte do código está correta. Ao utilizar User.call(this, nome, email) na função construtora do Admin, você está essencialmente chamando o construtor da classe User, garantindo que as propriedades nome e email sejam inicializadas corretamente.

Isso permite que você crie instâncias da classe Admin com diferentes valores para nome, email e role. Ou seja, ao fazer const novoAdmin = new Admin('Iury', 'meu@email.com', 'admin'), você está definindo os valores específicos para essa instância.

A outra abordagem que você mencionou, onde nome e email são definidos diretamente na função construtora do Admin, realmente limita esses valores para todas as instâncias dessa classe.

Se você quiser flexibilidade para definir esses valores durante a criação da instância, a primeira abordagem é a mais adequada.

Resumindo, a forma que você mostrou primeiro está correta e permite uma maior flexibilidade na criação de instâncias do objeto Admin.

Ah sim, bom saber então. Muitíssimo obrigado pela ajuda!