Reflect

About

Reflectarrow-up-right это встроенный объект, предоставляющий методы для перехватываемых операций JavaScript. Это те же самые методы, что имеются в обработчиках Proxyarrow-up-right. Объект Reflect не является функцией.

Reflect помогает при пересылке стандартных операций из обработчика к целевому объекту.

Например, метод Reflect.has() это тот же оператор inarrow-up-right но в виде функции:

Reflect.has(Object, 'assign'); // true

Улучшенная функция apply

В ES5 обычно используется метод Function.prototype.apply()arrow-up-right для вызова функции в определенном контексте (с определенным this) и с параметрами, заданными в виде массива (или массиво-подобного объектаarrow-up-right).

Function.prototype.apply.call(Math.floor, undefined, [1.75]);

С методом Reflect.applyarrow-up-right эта операция менее громоздка и более понятна:

Reflect.apply(Math.floor, undefined, [1.75]);
// 1;

Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111]);
// "hello"

Reflect.apply(RegExp.prototype.exec, /ab/, ['confabulation']).index;
// 4

Reflect.apply(''.charAt, 'ponies', [3]);
// "i"

Проверка успешности определения нового свойства

Метод Object.definePropertyarrow-up-right, в случае успеха операции, возвращает объект, а при неудаче вызывает ошибку TypeErrorarrow-up-right. Из-за этого определение свойств требует обработки блоком try...catcharrow-up-right для перехвата возможных ошибок. Метод Reflect.definePropertyarrow-up-right, в свою очередь, возвращает успешность операции в виде булева значения, благодаря чему возможно использование простого if...elsearrow-up-right условия:

Last updated