В чём разница между оператором in и методом hasOwnProperty?

Оператор in и метод hasOwnProperty в JavaScript служат для проверки наличия свойства у объекта, но работают по-разному:

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

Что ответить на собеседовании

Оператор in и метод hasOwnProperty в JavaScript служат для проверки наличия свойства у объекта, но работают по-разному:

Подробный разбор

Ответ с пояснениями

Оператор in и метод hasOwnProperty в JavaScript служат для проверки наличия свойства у объекта, но работают по-разному:

  • in проверяет, есть ли свойство с указанным именем в объекте или в его прототипной цепочке.
  • hasOwnProperty проверяет, есть ли свойство только непосредственно в самом объекте, без учёта прототипов.

Пример:

const obj = { a: 1 };
console.log('a' in obj); // true
console.log(obj.hasOwnProperty('a')); // true

console.log('toString' in obj); // true, так как toString есть в прототипе Object
console.log(obj.hasOwnProperty('toString')); // false

Таким образом, если нужно проверить, принадлежит ли свойство именно самому объекту, а не унаследовано, используют hasOwnProperty. Если достаточно проверить наличие свойства где-либо в цепочке, используют in.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее