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

A resposta está perfeita, como sempre.

Só para dar uma pitada de sal, de fato tudo que é dado (não códigos ou qualquer outras coisa, que poucas linguagens são assim, ou seja, que tratam tudo como dados, em geral chamadas de homoicônicas) é objeto.

Claro que não é no sentido do que fala a postagem original e ao seu reply, que está correto em separar o "objeto composto" e que é um Object, do objeto simples (muitas vezes chamados de escalar, mesmo quando não é).

A questão do null é diferente, e ele é um tipo simples que pode ser atribuído onde cabe um "objeto". No JS é o que é, o mais importante é o efeito geral.

Quis trazer alguns links para dar mais luz ao assunto que é interessante para quem quer saber a computação além da superfície. Tem muito mais informações para pesquisar. Entender como as coisas são é melhor do que só intuir.

Obrigado por essa contribuição.

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

Carregando publicação patrocinada...
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".