Spec-Zone.ru › JavaScript

Reflect.has()

Baseline Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в версиях браузеров. Она доступна во всех браузерах с сентября 2016 года.

Статический метод Reflect.has() похож на оператор in, но представлен в виде функции.

Попробуйте

const object = {
  property1: 42,
};

console.log(Reflect.has(object, "property1"));
// Expected output: true

console.log(Reflect.has(object, "property2"));
// Expected output: false

console.log(Reflect.has(object, "toString"));
// Expected output: true

Синтаксис

Reflect.has(target, propertyKey)

Параметры

target
Целевой объект, в котором нужно искать свойство.
propertyKey
Имя проверяемого свойства.

Возвращаемое значение

Boolean, указывающий, имеет ли target данное свойство.

Исключения

TypeError
Выбрасывается, если target не является объектом.

Описание

Reflect.has() обеспечивает семантику отражения для проверки наличия свойства в объекте. То есть, Reflect.has(target, propertyKey) семантически эквивалентно:

propertyKey in target;

Reflect.has() вызывает внутренний метод объекта [[HasProperty]] из target.

Примеры

Использование 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 возвращает true для любых унаследованных свойств, как и оператор in:

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

Спецификации

Specification
ECMAScript® 2027 Language Specification
# sec-reflect.has

Совместимость с браузерами

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
has
49
12
42
36
10
49
42
36
10
5.0
49
10
1.0.0
1.0
6.0.0

См. также

  • Polyfill of Reflect.has in core-js
  • Reflect
  • in
  • handler.has()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/has

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API