Reflect API — это встроенный объект JavaScript, который предоставляет методы для перехвата и пересылки фундаментальных операций языка — тех же операций, которые могут перехватывать объекты Proxy.
Наиболее часто используемые методы Reflect зеркалируют названия соответствующих ловушек Proxy:
Reflect.get(target, prop) — читает значение свойстваReflect.set(target, prop, value) — записывает значение свойстваReflect.has(target, prop) — проверяет наличие свойства (как оператор in)Reflect.deleteProperty(target, prop) — удаляет свойствоReflect.apply(target, thisArg, args) — вызывает функциюReflect особенно полезен внутри хендлеров Proxy. Когда ты перехватываешь операцию, можешь использовать Reflect, чтобы пробросить стандартное поведение на исходную цель без необходимости реализовывать его вручную:
const proxy = new Proxy(target, {
get(target, prop, receiver) {
console.log(`Getting: ${prop}`);
return Reflect.get(target, prop, receiver); // пробрасываем стандартное поведение
}
});
Этот паттерн гарантирует, что операция работает корректно, включая правильную обработку унаследованных свойств и контекста receiver.
Reflect возвращают осмысленные результаты (например, Reflect.set() возвращает true/false) вместо выброса исключенийObjectReflect и Proxy созданы для совместной работы. Proxy перехватывает операции, а Reflect предоставляет надёжный способ делегировать эти операции их стандартному поведению.
Reflect.set() возвращает boolean значение, указывающее на успех или неудачу, тогда как Object.defineProperty() выбрасывает ошибку при неудаче.
Новый — ещё не проверен сообществом
Вы