typeof
всегда будет возвращать примитивный тип. («строка», «число», «объект» и т. д.).
Объект представляет собой примитивную структуру типов, неупорядоченный список примитивных типов данных, хранящихся в виде пары пар имя-значение.
Object
- конструктор примитива объекта.
var test = {};
console.log(typeof test); // object
console.log(test instanceof object) // false
console.log(test instanceof Object) // true
В соответствии с этим, чтобы проверить дату или массив, используя typeof
воли возвращает object
:
typeof []; // object
typeof new Date(); // object
Чтобы проверить, является ли объект на самом деле дата или массив, вы можете использовать instanceof
:
[] instanceof Array; // true
new Date() instanceof Date; // true
что касается typeof null
, это ошибка в ECMAScript согласно the MDN и должен быть нулевым. Ошибка описана в this answer. A fix был предложен через отказ, к сожалению, изменение было отклонено из-за кода с использованием этой конкретной «ошибки» для проверки на null
.
Я думаю, что информация сбивает с толку, если не совсем неправильно. Функции также являются объектами. И здесь есть много других объектов: Number, String, RegExp ... –
«Я видел следующие заявления в W3school». --- первое правило, не используйте w3schools. Никогда. **НИКОГДА**. – zerkms
Попробуйте [MDN docs] (https://developer.mozilla.org/en/docs/Web/JavaScript/Data_structures). – Tigger