4
respostas

Autentica instaof do Cliente

Olá professor, tudo bem?

Ja chegando no final da aula, você comenta que você poderia verificar o se o autenticar existe direto dentro do Objeto Cliente. utilizando algo parecido com isso:

    static exiteDentroDoObjeto (classeReferida){

        return 'autenticar' in classeReferida &&
                classeReferida.autenticar instanceof Cliente 

    }

A classe Cliente contém a função autenticar, segue:

export class Cliente{

    constructor(nome, cpf, senha){
        this.nome = nome;
        this._cpf = cpf;
        this._senha = senha

    }

    get cpf(){
        return this._cpf;
    }

    autenticar(){

        return true
    }

}

No entanto, o retorno da expressão sempre retorna false.

Dado o fato que autenticar está dentro Cliente, não era para ele retornar o true? Ou o motivo do erro significa que o instaof está buscando dentro da classe Cliente uma instancia do cliente?

4 respostas

Nesse caso o problema está no instanceofmesmo. Vc está usando o instanceOf na propriedade classeReferida.autenticar ou seja, vc está querendo verificar que a propriedade autenticar do obj que vc recebeu é do tipo Cliente. Acontece que autenticar é do tipo Function e por isso ele retorna false pra vc

Humm! Então o retorno é esse mesmo, false, já que o a propriedade não é instancia do Cliente, e sim instancia da Função?

Na verdae o retorno é false pq vc tem uma expressão lógica acontecendo ali.

'autenticar' in classeReferida && classeReferida.autenticar instanceof Cliente 

Esse operador && é um operador lógico que chamamos de "e" ou seja para ele retornar verdadeiro a primeiro e a segunda parte dessa expressão devem ser verdadeiras.

No seu caso: 'autenticar' in classeReferida é verdadeira classeReferida.autenticar instanceof Clienteé falsa

por issoverdadeira && falsa retorna falsa

Obrigado Professor

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software