1
resposta

[Dúvida] Necessidade do Object.create() no exemplo da aula

Olá.

Fiquei com a mesma dúvida de uma aluna, que criou um tópico no fórum, porém não foi respondida.

Nesta aula, por volta dos 9 minutos, é utilizado o código abaixo:

Admin.prototype = Object.create(User.prototype);

No entanto, não entendi a necessidade do Object.create() neste caso. Rodei o código sem ele e, aparentemente, a saída foi a mesma.

Por favor, saberiam dizer por que (ou se) é necessário o uso do Object.create() neste caso?

Segue o código completo para referência:

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

    this.exibirInfos = function() {
        return `Nome: ${this.nome}; e-mail: ${this.email}`;
    }
}

function Admin(role) {
    User.call(this, 'Matheus', 'meu@email.br');
    this.role = role || 'estudante';
}

// o resultado é o mesmo adicionando ou não a próxima linha
// Admin.prototype = Object.create(User.prototype);
const newUser = new Admin('coordenador');
console.log(newUser);

Obrigado.

1 resposta

Boa noite!

O uso do object create na linha Admin.prototype = Object.create(User.prototype); vai influenciar na cadeira de prototipos do javascript. Quando vc retira ele, caso vc tente verificar a cadeira de prototipos vai observar que vai apontar para Admin.prototype. Você pode observar isso no navegador digitando:

newUser.proto

Quando vc usa ele ao tentar digitar o comando acima no navegador, vai observar que ele vai apontar para User.prototype Insira aqui a descrição dessa imagem para ajudar na acessibilidade