Reflect.apply()

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.

Статический метод Reflect.apply() вызывает переданную ему функцию с указанными аргументами.

Интерактивный пример

Синтаксис

Reflect.apply(target, thisArgument, argumentsList)

Параметры

target

Функция, которую необходимо вызвать.

thisArgument

Значение переменной this во время вызова функции target.

argumentsList

Объект, подобный массиву, содержащий аргументы, с которыми должна быть вызвана функция target.

Возвращаемое значение

Возвращается значение, которое вернёт функция target с указанным значением переменной this и аргументами.

Исключения

TypeError, если функция target не может быть вызвана.

Описание

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

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

С использованием Reflect.apply это действие становится более понятным и занимает меньше места в коде.

Примеры

Использование Reflect.apply()

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

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

Reflect.apply(RegExp.prototype.exec, /вы/, [
  "превысокомногорассмотрительствующий",
]).index;
// 4

Reflect.apply("".charAt, "пони", [3]);
// "и"

Спецификации

Specification
ECMAScript Language Specification
# sec-reflect.apply

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также