Object#hasOwnProperty
プロトタイプオブジェクトを辿らずにそのオブジェクトがプロパティを持っているか調べれます。これはオブジェクトのメソッドですが、対象のオブジェクトがhasOwnPropertyを持っている可能性などが可能性は低いですがある為メソッドでの呼び出しは良くありません。以下のようにcallから呼び出すとほぼ確実にメソッドのhasOwnPropertyが呼び出せてより安全です。
Object.prototype.hasOwnProperty.call({foo: 'foo'}, 'foo');
// true
({foo: 'foo', hasOwnProperty: () => false}).hasOwnProperty('foo');
// falsein
プロパティ名 in オブジェクトでも調べることができます。こちらはプロトタイプを遡り調べることができます。
'hasOwnProperty' in Object
// trueもちろん、ただのプロパティの有無も調べられますよ。
'foo' in {foo: 'foo'}
// true