Этот вопрос помогает выявить знание о том, как проверить наличие свойства в объекте или его цепочке прототипов, а также различия между проверками внутри самого объекта и по всей цепочке прототипов.
Чтобы проверить, есть ли у объекта определенное свойство, можно использовать оператор in, который проверяет как сам объект, так и его прототипы. Если нужно проверить только наличие свойства непосредственно в объекте (без учета прототипов), используется метод hasOwnProperty().
В JavaScript есть несколько способов проверить наличие свойства в объекте. Оператор in проверяет как свойства объекта, так и свойства, которые могут быть унаследованы от его прототипов.
Пример:
const animal = { canMove: true };
const dog = Object.create(animal);
dog.barks = true;
console.log('barks' in dog); // true
console.log('canMove' in dog); // true (унаследовано от animal)Если же нужно проверить, принадлежит ли свойство именно самому объекту, без учета его прототипов, можно использовать метод hasOwnProperty():
console.log(dog.hasOwnProperty('barks')); // true
console.log(dog.hasOwnProperty('canMove')); // falseЭтот метод проверяет только свойства, непосредственно принадлежащие объекту. Он полезен, если вы хотите отделить свойства объекта от свойств, унаследованных через прототипы.