Назад к вопросам
Middle+
3
Чем отличается проверка 'key in result' от 'result.hasOwnProperty(key)'?
Компании, где спрашивали
Яндекс
Ответ от нейросети
sobes.tech AI
Оператор key in result проверяет, существует ли свойство с именем key в объекте result или в его прототипной цепочке. То есть он возвращает true, если свойство найдено где-либо в объекте или его прототипах.
Метод result.hasOwnProperty(key) проверяет только собственные свойства объекта result, не учитывая прототипы. Он вернёт true только если свойство принадлежит самому объекту, а не унаследовано.
Пример:
const obj = { a: 1 };
console.log('a' in obj); // true
console.log(obj.hasOwnProperty('a')); // true
console.log('toString' in obj); // true, т.к. toString в прототипе
console.log(obj.hasOwnProperty('toString')); // false
Таким образом, in проверяет наличие свойства в объекте и его прототипах, а hasOwnProperty — только в самом объекте.