個人的な考えです。
僕は、for...in...文を使わずに、for...of...文で代替しています。
const obj = { a:1,b:2 };
for(const [key,value] of Object.entries(obj)){
console.log(key,value);
}
理由は二つあります。
① 単純に、for...in...文でobj[key]とするのが面倒だから。
② Object.hasOwnPropaty()を使用しないと、プロトタイプチェーン内も対象としてしまうから。
懸念点は、Object.entries(obj)によるパフォーマンス低下ですが、現時点では特に気にせずに使用しています。