JavaScript | handler.apply() 方法
JavaScript 中的handler.apply() 方法用作函数调用的陷阱。此方法返回的值用作通过代理调用函数的结果。
句法:
const p = new Proxy(target, {
apply: function(target, thisArg, argumentsList) {
}
});
参数:此方法接受三个参数,如上所述,如下所述:
- target:此参数保存目标对象。
- thisArg:此参数用于调用。
- argumentsList:此参数包含列表作为参数并用于调用。
返回值:此方法返回任何值。
下面的示例说明了 JavaScript 中的 handler.apply() 方法:
示例 1:
javascript
function sum(a, b) {
return a + b;
}
const handler = {
apply: function(target, thisArg, argumentsList) {
console.log(`Calculate sum: ${argumentsList}`);
return target(argumentsList[0], argumentsList[1])*14/3;
}
};
const proxy1 = new Proxy(sum, handler);
console.log(sum(23, 4));
console.log(proxy1(23, 4));
javascript
var str = function(arg1, arg2) {
console.log('geeks get (' + arg1 + ', ' + arg2 + ')');
};
var proxy = new Proxy(str, {
apply: function(target, thisArg, parameters) {
console.log('Geeksforgeeks');
return target.apply(thisArg, parameters);
}
});
proxy('Tutorial', 'Jobs');
proxy.apply(null, ['Knowledge', 'internships']);
proxy.call(null, 'Stipend', 'skills');
输出:
27
"Calculate sum: 23, 4"
126
示例 2:
javascript
var str = function(arg1, arg2) {
console.log('geeks get (' + arg1 + ', ' + arg2 + ')');
};
var proxy = new Proxy(str, {
apply: function(target, thisArg, parameters) {
console.log('Geeksforgeeks');
return target.apply(thisArg, parameters);
}
});
proxy('Tutorial', 'Jobs');
proxy.apply(null, ['Knowledge', 'internships']);
proxy.call(null, 'Stipend', 'skills');
输出:
"Geeksforgeeks"
"geeks get (Tutorial, Jobs)"
"Geeksforgeeks"
"geeks get (Knowledge, internships)"
"Geeksforgeeks"
"geeks get (Stipend, skills)"
支持的浏览器: JavaScript handler.apply() 方法支持的浏览器如下:
- 谷歌浏览器 49 及更高版本
- 边缘 12 及以上
- 火狐 18 及以上
- Opera 36 及以上
- Safari 10 及更高版本