Baseline Widely available
handler.apply()
ã¡ã½ããã¯ããªãã¸ã§ã¯ãã® [[Call]]
å
é¨ã¡ã½ããã«å¯¾ãããã©ããã§ãã颿°å¼ã³åºããªã©ã®æä½ã§ä½¿ç¨ããã¾ãã
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
æ§æ
new Proxy(target, {
apply(target, thisArg, argumentsList) {
}
});
弿°
次ã®å¼æ°ã apply()
ã¡ã½ããã«æ¸¡ããã¾ãã this
ã¯ãã³ãã©ã¼ã«ãã¤ã³ãããã¾ãã
target
ã¿ã¼ã²ãããªãã¸ã§ã¯ã
thisArg
ãã®å¼ã³åºãã«å¯¾ãã this
弿°
argumentsList
ãã®å¼ã³åºãã«å¯¾ãã弿°ãªã¹ã
apply()
ã¡ã½ããã¯ã©ããªå¤ã§ãè¿ããã¨ãã§ãã¾ãã
ãã®ãã©ããã¯ä¸è¨ã®æä½ã«ä»å ¥ã§ãã¾ãã
proxy(...args)
Function.prototype.apply()
and Function.prototype.call()
Reflect.apply()
ä»ã«ãã[[Call]]
å
é¨ã¡ã½ãããå¼ã³åºãããããæä½ã«ä»å
¥ã§ãã¾ãã
以ä¸ã®ä¸å¤æ¡ä»¶ã«éåãã¦ããå ´åããã©ãããå¼ã³åºããã㨠TypeError
ãçºçãã¾ãã
target
ã¯å¼ã³åºãå¯è½ã§ããå¿
è¦ãããã¾ããã¤ã¾ã颿°ãªãã¸ã§ã¯ãã§ãªããã°ãªãã¾ãããæ¬¡ã®ã³ã¼ãã§ã¯ã颿°å¼ã³åºãããã©ãããã¾ãã
const p = new Proxy(function () {}, {
apply(target, thisArg, argumentsList) {
console.log(`called: ${argumentsList}`);
return argumentsList[0] + argumentsList[1] + argumentsList[2];
},
});
console.log(p(1, 2, 3)); // "called: 1,2,3"
// 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