📜  JavaScript | handler.apply() 方法

📅  最后修改于: 2022-05-13 01:56:34.325000             🧑  作者: Mango

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 及更高版本