Содержание

typeof

Оператор typeof в JavaScript используется для проверки типов данных. Он выдает строковое имя, представляющее тип содержимого переменной, согласно таблице:

Тип Результат
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Function "function"
Любой другой объект "object"

Т.е. для переменных типа object, array или пользовательского объекта, оператор typeof возвращает строку object, не позволяет понять, в чем состоит разница между всеми этими объектами. Пример.

// Проверка, не является ли наш массив на самом деле строкой
if ( typeof arr == "string" )
// Если так оно и есть, создание массива,за счет разбиения строки
// по элементам, разделенным запятыми
arr = arr.split(",");

constructor

Альтернативный способ проверки типа объекта заключается в использовании ссылки на свойство, присущее всем объектам JavaScript, которое называется constructor. Это свойство является ссылкой на функцию, используемую для первоначального создания этого объекта.

// Проверка, не является ли наша строка на самом деле массивом
if ( str.constructor == Array )
// Если так оно и есть, создание строки за счет объединения элементов
// массива через запятые
str = str.join(',');

Таблица проверки типа

В таблице показаны результаты проверки типа различных объектов с использованием обоих методов. В первом столбце таблицы показан объект, тип которого нужно определить. Второй столбец показывает результат работы оператора typeof, все результаты, представленные в этом столбце являются строками. В третьем столбце показан результат работы constructor, все результаты, представленные в этом столбце, являются объектами.

Переменная typeof Конструктор переменной
{ an: “object” } object Object
[ “an”, “array” ] object Array
function(){} function Function
“a string“ string String
777 number Number
true boolean Boolean
new UserObj() object UserObj
Использование конструктора переменной в качестве ссылки на тип объекта — это наиболее надежный и безошибочный способ проверки типов.