Разница между методами hasOwnProperty() и in при проверке свойств объекта в JavaScript заключается в том, что первый проверяет только собственные свойства, а второй — и собственные, и унаследованные. 13
Метод hasOwnProperty() проверяет, существует ли указанное свойство непосредственно в объекте, а не в цепочке его прототипов. 1 Он возвращает true, если свойство найдено непосредственно в объекте, и false в противном случае. 1
Оператор in проверяет, существует ли указанное свойство в объекте или цепочке его прототипов. 1 Он возвращает true, если свойство найдено либо непосредственно в объекте, либо в цепочке его прототипов, и false в противном случае. 1
Таким образом, метод hasOwnProperty() подходит для ситуаций, когда необходимо ограничить проверку лишь самим объектом, не затрагивая его прототипы. 2 Оператор in будет уместен в случаях, когда требуется учитывать унаследованные свойства или динамические имена свойств. 2