Reflect.has()

The static Reflect.has() method works like the in operator as a function.

Syntax

Reflect.has(target, propertyKey)

Parameters

target
The target object in which to look for the property.
propertyKey
The name of the property to check.

Return value

A Boolean indicating whether or not the target has the property.

Exceptions

A TypeError, if target is not an Object.

Description

The Reflect.has method allows you to check if a property is in an object. It works like the in operator as a function.

Examples

Using Reflect.has()

Reflect.has({x: 0}, 'x')  // true
Reflect.has({x: 0}, 'y')  // false

// returns true for properties in the prototype chain
Reflect.has({x: 0}, 'toString')

// Proxy with .has() handler method
obj = new Proxy({}, {
  has(t, k) { return k.startsWith('door')  }
});
Reflect.has(obj, 'doorbell')  // true
Reflect.has(obj, 'dormitory')  // false

Reflect.has returns true for any inherited properties, like the in operator:

const a = {foo: 123}
const b = {__proto__: a}
const c = {__proto__: b}
// The prototype chain is: c -> b -> a
Reflect.has(c, 'foo') // true

Specifications

Specification
ECMAScript Language Specification (ECMAScript)
#sec-reflect.has

Browser compatibility

BCD tables only load in the browser

See also