handler.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.
Метод handler.apply()
является ловушкой для вызова функции.
Интерактивный пример
Синтаксис
const p = new Proxy(target, { apply: function(target, thisArg, argumentsList) { } });
Параметры
Методу apply()
передаются следующие параметры. this
связан с объектом-обработчиком.
target
-
Исходный объект.
thisArg
-
Аргумент
this
для вызова. argumentsList
-
Список аргументов для вызова.
Возврат значения
Метод apply()
может возвращать значение.
Описание
Метод handler.apply()
является ловушкой для вызова функции.
Перехват
Ловушка может перехватывать следующие операции:
proxy(...args)
Function.prototype.apply()
иFunction.prototype.call()
Reflect.apply()
Инварианты
Если следующие инварианты нарушены, то прокси выбросит TypeError
.
Исходный объект target
должен быть самовызываемым. То есть, это должна быть функция-объект.
Примеры
Ловушка для вызова функции
Следующий код ловит вызов функции.
const p = new Proxy(function () {}, {
apply: function (target, thisArg, argumentsList) {
console.log("called: " + argumentsList.join(", "));
return argumentsList[0] + argumentsList[1] + argumentsList[2];
},
});
console.log(p(1, 2, 3)); // "called: 1, 2, 3"
// 6
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist |
Совместимость с браузерами
BCD tables only load in the browser