Olá!
Acompanhando a aula sobre Object.create() vs new, escrevemos o seguinte código para criar um objeto que herda propriedades e métodos de outro objeto:
function User(nome, email) {
this.nome = nome;
this.email = email;
this.exibirInfos = function () {
return `${this.nome}, ${this.email}`;
};
};
function Admin(role) {
User.call(this, 'Juliana', 'j@j.com');
this.role = role || 'estudante';
};
Admin.prototype = Object.create(User.prototype);
const novoUser = new Admin('admin');
console.log(novoUser.exibirInfos());
console.log(novoUser.role);
Não entendi bem porque que depois de já ter usado o método call() dentro do objeto Admin ainda foi necessário incluir a linha <Admin.prototype = Object.create(User.prototype);>. Inclusive, comentando essa linha o resultado na execução do programa é o mesmo. Gostaria de entender melhor o que está acontecendo nessa linha de código.