JavaScript Reflect.apply() — викликати функцію з масивом аргументів


Метод Reflect.apply() викликає функцію із заданим this і масивом аргументів.

автор: NagarD

Загальний опис

Робить те саме, що func.apply(), але надійніше. Річ у тім, що apply — це властивість самої функції, і її можна перевизначити чи втратити (наприклад, на об'єкті з null замість прототипу). Reflect.apply() не залежить від об'єкта, який викликає.

У парі з Proxy реалізує пастку apply — так функцію можна обгорнути логуванням чи вимірюванням часу, лишивши її поведінку незмінною.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
apply 49+ 42+ 10+ 36+ 12+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
apply 49+ yes yes 10+

Приклади

+ запропонувати свій приклад у пісочниці

Обгортка, що міряє час виконання будь-якої функції.

console.log(Reflect.apply(Math.max, null, [1, 5, 3])); // 5

// обгортка через пастку apply
function timed(fn) {
    return new Proxy(fn, {
        apply(target, thisArg, args) {
            const start = performance.now();

            const result = Reflect.apply(target, thisArg, args);

            console.log(target.name, 'зайняла', performance.now() - start, 'мс');

            return result;
        },
    });
}

const slowSum = timed(function sum(a, b) { return a + b; });
slowSum(1, 2);
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід