Executando verificação de segurança...
2

Bem lembrado. De fato, "objeto" é um termo bem amplo, e cada linguagem acaba usando-o de maneiras diferentes (o mesmo vale para "primitivo"). Em muitos casos, nada tem a ver com orientação a objeto - só pra citar um exemplo, em C o termo "objeto" é definido como uma "região de armazenamento de dados do ambiente de execução, cujo conteúdo pode representar valores".


Outro detalhe: null é listado com um dos valores primitivos. E na especificação da linguagem não há nenhuma menção a um "objeto null" (como há para os outros tipos listados, como "Number Object", "Boolean Object", etc, mas nada de "Null Object"). Então o null não é um objeto?

Mas então porque typeof null retorna "object"? Simples, porque a especificação da linguagem diz que é assim:

5. If val is null, return "object".

Se algo é null, então typeof algo deve retornar "object". Ou seja, a especificação não tem nenhuma menção a "Null Object" (como tem para todos os subtipos de Object), mas ao mesmo tempo define que o tipo de null é "object".

Carregando publicação patrocinada...