Sobes.tech
Назад к вопросам
Middle
4

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

Компании, где спрашивали
МВидео/эльдорадо

Ответ от нейросети

sobes.tech AI

Оператор 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.