1
resposta

[Dúvida] Duvida isPrototypeOf

Realizando a exportação e importação da class User, quando avaliamos se User é prototipo de Admin retorna false, alguém sabe explicar porque ? seria porque estão em arquivos JS diferentes ?

import User from "./User.js";

class Admin extends User {
    constructor (nome, email, nascimento, role = 'Administrador', ativo = true){
        super(nome, email, nascimento, role, ativo)
    }
}

const novoAdmin = new Admin('xxx', 'yyyyy@yyy.com', 'xx/xx/xxxx');

console.log(User.prototype.isPrototypeOf(Admin));

Lembrando que o true que aparece é da importação de classe la do console.log de User
![Terminal](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

1 resposta

Olá! Luden! Como vai?

O método isPrototypeOf é utilizado para verificar se um objeto está no protótipo de outro objeto. No seu caso, você está verificando se User.prototype é protótipo de Admin, mas isso não é exatamente o que isPrototypeOf faz.

Quando você cria uma classe Admin que estende User, Admin.prototype herda de User.prototype. No entanto, Admin em si não é uma instância de User, mas sim uma classe que herda de User.

Para verificar a relação de protótipo correta, você pode fazer isso:

console.log(User.prototype.isPrototypeOf(novoAdmin)); // true

Isso retorna true porque novoAdmin é uma instância de Admin, que herda de User, portanto User.prototype está na cadeia de protótipos de novoAdmin.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.