В объекте создаваемом по умолчанию есть ключи наследуемые из прототипа, такие как toString, isPrototypeOf. Шанс того что ты попадёшь в эти ключи в своём коде ничтожен, но он существует. Можно создать "чистый" объект без прототипа, при помощи Object.create(null). Или воспользоваться проверкой hasOwnProperty.
В объекте создаваемом по умолчанию есть ключи наследуемые из прототипа, такие как toString, isPrototypeOf. Шанс того что ты попадёшь в эти ключи в своём коде ничтожен, но он существует. Можно создать "чистый" объект без прототипа, при помощи Object.create(null). Или воспользоваться проверкой hasOwnProperty.
Я вроде бы hasOwnProperty использовал пару раз всего
Некоторые перебирающие методы массива ты можешь использовать неправильно и не подозревать об этом. А если ты не знаешь что делаешь с reduce - шансы обнаружить ошибку выше.