Baseline Widely available
handler.apply()
æ¹æ³ç¨äºæ¦æªå½æ°çè°ç¨ã
function sum(a, b) {
return a + b;
}
const handler = {
apply: function (target, thisArg, argumentsList) {
console.log(`Calculate sum: ${argumentsList}`);
// Expected output: "Calculate sum: 1,2"
return target(argumentsList[0], argumentsList[1]) * 10;
},
};
const proxy1 = new Proxy(sum, handler);
console.log(sum(1, 2));
// Expected output: 3
console.log(proxy1(1, 2));
// Expected output: 30
è¯æ³
var p = new Proxy(target, {
apply: function (target, thisArg, argumentsList) {},
});
åæ°
以䏿¯ä¼ éç» apply æ¹æ³çåæ°ï¼this
ä¸ä¸æç»å®å¨ handler 对象ä¸ã
target
ç®æ 对象ï¼å½æ°ï¼ã
thisArg
被è°ç¨æ¶çä¸ä¸æå¯¹è±¡ã
argumentsList
被è°ç¨æ¶çåæ°æ°ç»ã
apply
æ¹æ³å¯ä»¥è¿åä»»ä½å¼ã
handler.apply
æ¹æ³ç¨äºæ¦æªå½æ°çè°ç¨ã
è¯¥æ¹æ³ä¼æ¦æªç®æ 对象ç以䏿ä½ï¼
proxy(...args)
Function.prototype.apply()
å Function.prototype.call()
Reflect.apply()
妿è¿åäºä»¥ä¸çº¦æï¼ä»£çå°æåºä¸ä¸ª TypeErrorï¼
target
å¿
é¡»æ¯å¯è¢«è°ç¨çãä¹å°±æ¯è¯´ï¼å®å¿
é¡»æ¯ä¸ä¸ªå½æ°å¯¹è±¡ã
以ä¸ä»£ç æ¼ç¤ºå¦ä½æè·å½æ°çè°ç¨ã
var 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"; outputs 6
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4