Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, есть ли свойство в объекте

Короткий ответ

Object.hasOwn() проверяет, есть ли у объекта собственное свойство:

const user = { name: 'Anna' };
 
console.log(Object.hasOwn(user, 'name'));
console.log(Object.hasOwn(user, 'age'));

Результат:

true
false

Оператор in

Оператор in учитывает и унаследованные свойства, например встроенные методы:

const user = { name: 'Anna' };
 
console.log('name' in user);
console.log('toString' in user);

Результат:

true
true

Почему не сравнение с undefined

Свойство может существовать и при этом хранить undefined — тогда сравнение даст неверный ответ:

const settings = { theme: undefined };
 
console.log(settings.theme !== undefined);
console.log(Object.hasOwn(settings, 'theme'));

Результат:

false
true

Частая ошибка

Проверка вида if (user.age) считает отсутствующим свойство со значением 0, false или пустой строкой:

const user = { name: 'Anna', age: 0 };
 
console.log(user.age ? 'has age' : 'no age');
console.log(Object.hasOwn(user, 'age') ? 'has age' : 'no age');

Результат:

no age
has age

Функции из этого ответа

  • Object.hasOwn — Проверяет, есть ли у объекта собственное свойство.
  • Object.keys — Возвращает массив имён свойств объекта.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.