Назад к вопросам
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.