📅  最后修改于: 2020-10-25 09:13:30             🧑  作者: Mango
handler.apply()方法用于捕获函数调用。 Apply陷阱返回的值也将用作通过代理进行函数调用的结果。
apply: function(target, thisArg, argumentsList)
target:目标对象。
thisArg:thisArg用于调用。
argumentsList:用于调用的参数列表。
此方法可以返回任何值。
Chrome | 49 |
Edge | 12 |
Firefox | 18 |
Opera | 36 |
var o = function(arg1, arg2) {
document.writeln('proxy value(' + arg1 + ', ' + arg2 + ')');
};
var proxy = new Proxy(o, {
apply: function(target, thisArg, parameters) {
document.writeln('First exam..');
document.writeln("");
return target.apply(thisArg, parameters);
}
});
proxy('23', '54');
输出:
First exam..
proxy value(23, 54)
var str = function(arg1, arg2) {
document.writeln('in x(' + arg1 + ', ' + arg2 + ')');
};
var proxy = new Proxy(str, {
apply: function(target, thisArg, parameters) {
document.writeln('in apply');
document.writeln("
");
return target.apply(thisArg, parameters);
}
});
proxy('direct1', 'direct2');
proxy.apply(null, ['add', 'add']);
proxy.call(null, 'string', 'string');
输出:
in apply
in x(direct1, direct2) in apply
in x(add, add) in apply
in x(string, string)
function p (a)
{
return a ;
}
var q = {
apply: function(target, thisArg, argumentsList) {
return target(argumentsList[0], argumentsList[1])*2;
}};
var pro = new Proxy(p, q);
document.writeln(p(56));
document.writeln("
");
document.writeln(pro(34));
输出:
56
68