Baseline Widely available
handler.construct()
ã¡ã½ããã¯ããªãã¸ã§ã¯ãã® [[Construct]]
å
é¨ã¡ã½ããã«å¯¾ãããã©ããã§ããnew
æ¼ç®åãªã©ã®æä½ã§ä½¿ç¨ããã¾ããçµæã¨ãã¦ã®ãããã·ã¼ãªãã¸ã§ã¯ãã new æ¼ç®åã使ç¨ã§ããããã«ããããã«ã¯ããããã·ã¼ãåæåããããã«ä½¿ç¨ãããã¿ã¼ã²ããèªä½ãæå¹ãªã³ã³ã¹ãã©ã¯ã¿ã¼ã§ããå¿
è¦ãããã¾ãã
function monster1(disposition) {
this.disposition = disposition;
}
const handler1 = {
construct(target, args) {
console.log(`Creating a ${target.name}`);
// Expected output: "Creating a monster1"
return new target(...args);
},
};
const proxy1 = new Proxy(monster1, handler1);
console.log(new proxy1("fierce").disposition);
// Expected output: "fierce"
æ§æ
new Proxy(target, {
construct(target, argumentsList, newTarget) {
}
})
弿°
次ã®å¼æ°ã construct()
ã¡ã½ããã«æ¸¡ããã¾ãã this
ã¯ãã³ãã©ã¼ã«ãã¤ã³ãããã¾ãã
target
ã¿ã¼ã²ããã®ã³ã³ã¹ãã©ã¯ã¿ã¼ãªãã¸ã§ã¯ãã§ãã
argumentsList
ã³ã³ã¹ãã©ã¯ã¿ã¼ã«æ¸¡ããã弿°ã®å
¥ã£ãé
å (Array
) ã§ãã
newTarget
å¼ã³åºãããå ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã
construct
ã¡ã½ããã¯æ°ãã使ããããªãã¸ã§ã¯ãã表ããªãã¸ã§ã¯ããè¿ãå¿
è¦ãããã¾ãã
ãã®ãã©ããã¯ä¸è¨ã®æä½ã«ä»å ¥ã§ãã¾ãã
new
æ¼ç®å: new myFunction(...args)
Reflect.construct()
ä»ã«ãã[[Construct]]
å
é¨ã¡ã½ãããå¼ã³åºãããããæä½ã«ä»å
¥ã§ãã¾ãã
ãããã·ã¼ã® [[Construct]]
å
é¨ã¡ã½ããã¯ã以ä¸ã®ä¸å¤æ¡ä»¶ã«éåãã¦ããå ´åãå¼ã³åºãããã¨ãã©ããã§ TypeError
ãçºçãã¾ãã
target
ãã³ã³ã¹ãã©ã¯ã¿ã¼èªèº«ã§ãªããã°ãªããªããObject
ã§ãªããã°ãªããªããæ¬¡ã®ã³ã¼ãã§ã¯ new
æä½ããã©ãããã¾ãã
const p = new Proxy(function () {}, {
construct(target, argumentsList, newTarget) {
console.log(`called: ${argumentsList}`);
return { value: argumentsList[0] * 10 };
},
});
console.log(new p(1).value); // "called: 1"
// 10
次ã®ã³ã¼ãã§ã¯ä¸å¤æ¡ä»¶ã«éåãã¾ãã
const p = new Proxy(function () {}, {
construct(target, argumentsList, newTarget) {
return 1;
},
});
new p(); // TypeError is thrown
次ã®ã³ã¼ãã¯ãããã·ã¼ãæ£ããåæåãã¦ãã¾ããããããã·ã¼ã® target
ã®åæåã¯ãããèªèº«ã new
æ¼ç®åã«æå¹ãªã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãªããã°ãªãã¾ããã
const p = new Proxy(
{},
{
construct(target, argumentsList, newTarget) {
return {};
},
},
);
new p(); // TypeError is thrown, "p" is not a constructor
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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