This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Reflect
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2016 г..
Reflect - это встроенный объект, который предоставляет методы для перехватываемых JavaScript операций. Эти методы аналогичны методамproxy handler.Reflect - это не функциональный, а простой объект, он не является сконструированным.
In this article
Описание
В отличие от большинства глобальных объектов,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");// trueReflect.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> |