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()
Функция, присваивающая прототип целевому объекту.
Примеры
Проверка наличия конкретных свойств у объекта
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
Возврат собственных ключей объекта
Reflect.ownKeys(duck); // [ "name", "color", "greeting" ]
Добавление нового свойства в объект
Reflect.set(duck, "eyes", "black"); // вернётся "true" если вызов успешен // объект "duck" теперь содержит свойство "eyes" со значением "black"
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-reflect-object |