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 - это не функциональный, а простой объект, он не является сконструированным.
Описание
В отличие от большинства глобальных объектов, 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> | 
Совместимость с браузерами
Loading…