Reflect

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

Reflect - это встроенный объект, который предоставляет методы для перехватываемых JavaScript операций. Эти методы аналогичны методам proxy handler. Reflect - это не функциональный, а простой объект, он не является сконструированным.

Описание

В отличие от большинства глобальных объектов, Reflect - это не конструктор. Вы не можете использовать его с оператором new или вызывать Reflect, как функцию. Все свойства и методы объекта Reflect являются статическими (так же, как и у объекта Math).

Методы

Объект Reflect обеспечивает работу статических функций, называющиеся так же, как методы proxy handler. Некоторые из этих методов - те же, что и соответствующие им методы класса Object.

Reflect.apply()

Вызывает целевую функцию с аргументами, переданными в параметре args. Смотрите также Function.prototype.apply().

Reflect.construct()

Оператор new как функция. Аналогично new target(...args). Также предоставляет возможность определить другой прототип.

Reflect.defineProperty()

Похож на Object.defineProperty(). Возвращает Boolean.

Reflect.deleteProperty()

Оператор delete как функция. Аналогично delete target[name].

Reflect.enumerate()

Похож на цикл for...in. Возвращает итератор с собственными перечисляемыми и наследуемыми свойствами целевого объекта.

Reflect.get()

Функция, которая возвращает значение свойств.

Reflect.getOwnPropertyDescriptor()

Аналогично Object.getOwnPropertyDescriptor(). Возвращает дескриптор указанного свойства если присутствует в объекте, иначе undefined.

Reflect.getPrototypeOf()

Аналогично Object.getPrototypeOf().

Reflect.has()

Оператор in как функция. Возвращает значение Boolean в зависимости от факта наличия собственного или наследованного свойства.

Reflect.isExtensible()

Аналогично Object.isExtensible().

Reflect.ownKeys()

Возвращает массив строк с именами собственных (не наследованных) свойств.

Reflect.preventExtensions()

Аналогично Object.preventExtensions(). Возвращает Boolean.

Reflect.set()

Функция, присваивающая значения свойствам. Возвращает Boolean значение true при успешном выполнении.

Reflect.setPrototypeOf()

Функция, присваивающая прототип целевому объекту.

Примеры

Проверка наличия конкретных свойств у объекта

js
const duck = {
  name: "Maurice",
  color: "white",
  greeting: function () {
    console.log(`Quaaaack! My name is ${this.name}`);
  },
};

Reflect.has(duck, "color");
// true
Reflect.has(duck, "haircut");
// false

Возврат собственных ключей объекта

js
Reflect.ownKeys(duck);
// [ "name", "color", "greeting" ]

Добавление нового свойства в объект

js
Reflect.set(duck, "eyes", "black");
// вернётся "true" если вызов успешен
// объект "duck" теперь содержит свойство "eyes" со значением "black"

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

Specification
ECMAScript® 2025 Language Specification
# sec-reflect-object

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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Reflect
apply
construct
defineProperty
deleteProperty
get
getOwnPropertyDescriptor
getPrototypeOf
has
isExtensible
ownKeys
preventExtensions
set
setPrototypeOf

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Смотрите также

  • Глобальный объект Proxy.
  • Объект handler.