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.
Please take two minutes to fill out our short survey.
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 |