The most bulletproof way of checking if an object has a certain key is:
Object.prototype.hasOwnProperty.call(obj, key)
This provides certain guarantees: it will only evaluate to true
if key
is a direct property of obj
, and it will work even if obj
doesn't have the usual Object
as its prototype (for example, if it was created with const obj = Object.create(null)
).
But it's a mouthful.
Is there any new syntax/method in ES6 or higher (including polyfillable or Babel-compilable 'proposals') that gives the same guarantees, but in a nicer, more readable way?