главная/Javascript: как проверить, что переменная это объект
Как проверить тип переменной в JS

Javascript: как проверить, что переменная это объект

Казалось бы, нет ничего проще чем проверить что переменная в js это объект. Но не все так просто, как кажется.

К примеру мы можем проверить через typeof, но проблема в том, что массив тоже будет объектом. Давайте рассмотрим пример ниже:

Неправильная проверка объекта

let a = {};
typeof a;
// 'object'

let b = [];
typeof b;
// 'object'

Как мы видим выше, переменная a и b вернули название своего типа как object.

Правильная проверка через class

Воспользуемся маленькой хитростью обратившись к свойству [[Class]], которое содержится в строенных объектах.

Напрямую мы сделать этого не можем, но мы можем прочитать его через метод toString. После чего получим строку такого типа: [object значение]

{}.toString({});
// [object Object]

{}.toString([]);
// [object Array]

Обратите внимание, что в консоле напрямую таким образом проверить не получиться. Потому что фигурные скобки будут считаться как блок.

Поэтому надо обернуть вызов например так:

console.log({}.toString({}));

Функция для проверки типа переменной JS

Теперь давайте напишем функцию и завернем всю логику, где на выходе обрежем не нужную информацию и получим только лишь тип переменной.

const getTypeOf = (obj) => {
  return {}.toString.call(obj).slice(8, -1);
}

let a = {};

getTypeOf(a); // Object

На выходе получаем строку с названием типа.