Reflect
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()(en-US)- Аналогично
Object.getOwnPropertyDescriptor(). Возвращает дескриптор указанного свойства если присутствует в объекте, иначеundefined. Reflect.getPrototypeOf()(en-US)- Аналогично
Object.getPrototypeOf(). Reflect.has()(en-US)- Оператор
inкак функция. Возвращает значениеBooleanв зависимости от факта наличия собственного или наследованного свойства. Reflect.isExtensible()(en-US)- Аналогично
Object.isExtensible(). Reflect.ownKeys()- Возвращает массив строк с именами собственных (не наследованных) свойств.
Reflect.preventExtensions()(en-US)- Аналогично
Object.preventExtensions(). ВозвращаетBoolean. Reflect.set()(en-US)- Функция, присваивающая значения свойствам. Возвращает
Booleanзначениеtrueпри успешном выполнении. Reflect.setPrototypeOf()(en-US)- Функция, присваивающая прототип целевому объекту.
Примеры
Проверка наличия конкретных свойств у объекта
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"Спецификации
| Спецификация | Статус | Комментарий |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Reflect' в этой спецификации. |
Стандарт | Изначальное определение. |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Глобальный объект
Proxy. - Объект
handler(en-US).