Boa noite
Bom eu dei um
console.log(typeof Cliente)e a saida foi uma "function"
e depois dei
console.log(typeof andre)e a saida foi um "object"
Não consegui entender o porque, os dois não deveriam ser do mesmo tipo?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite
Bom eu dei um
console.log(typeof Cliente)e a saida foi uma "function"
e depois dei
console.log(typeof andre)e a saida foi um "object"
Não consegui entender o porque, os dois não deveriam ser do mesmo tipo?
Boa tarde Renan, tudo certo?
Você trouxe uma ótima dúvida que evidencia como essa linguagem de programação foi mudando conforme o tempo e deixando alguns comportamentos que podem ser considerados inesperados.
A chamada typeof andre retornar object faz sentido, pois andre é um objeto instanciado da classe Cliente. Ou seja, andre representa um cliente, e a classe Cliente representa quais são os atributos e comportamentos que um cliente tem.
Mas então porque typeof Cliente não nos retorna Class ou algo parecido? É aí que entra uma questão mais histórica: as classes só foram introduzidas no ECMAScript 2015, ou seja, a palavra reservada typeof precede a existência das classes. Eu confirmei na documentação do MDN e não existe um retorno específico para as classes, elas aparentemente entram na categoria function.
Mas existe uma outra instrução que pode nos ajudar a lidar com classes e protótipos que é a instanceof, que eu recomendo conferir depois de terminar os cursos de JavaScript para back end .
Espero ter ajudado e bons estudos!