Sobes.tech
Back to questions
Middle+
2

Чем отличается проверка 'key in result' от 'result.hasOwnProperty(key)'?

Companies where asked
Яндекс

Answer from AI

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 — только в самом объекте.