Baseline Widely available
handler.get()
ã¯ããªãã¸ã§ã¯ãã® [[Get]]
å
é¨ã¡ã½ããã«å¯¾ãããã©ããã§ããããããã£ã¢ã¯ã»ãµã¼ãªã©ã®æä½ã§ä½¿ç¨ããã¾ãã
const monster1 = {
secret: "easily scared",
eyeCount: 4,
};
const handler1 = {
get: function (target, prop, receiver) {
if (prop === "secret") {
return `${target.secret.substring(0, 4)} ... shhhh!`;
}
return Reflect.get(...arguments);
},
};
const proxy1 = new Proxy(monster1, handler1);
console.log(proxy1.eyeCount);
// Expected output: 4
console.log(proxy1.secret);
// Expected output: "easi ... shhhh!"
æ§æ
new Proxy(target, {
get(target, property, receiver) {
}
})
弿°
次ã®å¼æ°ã get()
ã¡ã½ããã«æ¸¡ããã¾ãã this
ã¯ãã³ãã©ã¼ã«ãã¤ã³ãããã¾ãã
target
ã¿ã¼ã²ãããªãã¸ã§ã¯ãã§ãã
property
ããããã£ã®åç§°ã表ãæååã¾ã㯠Symbol
ã§ãã
receiver
this
å¤ã¯ã²ãã¿ã¼ç¨ã§ãã Reflect.get()
ãåç
§ãã¦ãã ãããããã¯é常ããããã·ã¼èªèº«ãããããã·ã¼ãç¶æ¿ãããªãã¸ã§ã¯ãã§ãã
get()
ã¡ã½ããã¯ã©ããªå¤ã§ãè¿ããã¨ãã§ãã¾ãã
ãã®ãã©ããã¯ä¸è¨ã®æä½ã«ä»å ¥ã§ãã¾ãã
proxy[foo]
㨠proxy.bar
Reflect.get()
ä»ã«ãã[[Get]]
å
é¨ã¡ã½ãããå¼ã³åºãããããæä½ã«ä»å
¥ã§ãã¾ãã
ãããã·ã¼ã®å
é¨ã¡ã½ãã [[Get]]
ã¯ããã³ãã©ã¼å®ç¾©ã以ä¸ã®ä¸å¤æ¡ä»¶ã®ããããã«éåãã¦ããå ´åã TypeError
ãçºçãã¾ãã
Reflect.getOwnPropertyDescriptor()
ãã target
ã®ããããã£ã«å¯¾ã㦠configurable: false, writable: false
ãè¿ããå ´åããã©ããã¯ã target
ã®ããããã£è¨è¿°åã® value
屿§ã¨åãå¤ãè¿ããªããã°ãªãã¾ãããundefined
ã§ãªããã°ãªãã¾ãããã¤ã¾ãã Reflect.getOwnPropertyDescriptor()
ããtarget
ã®ããããã£ã«å¯¾ã㦠configurable: false, get: undefined
ãè¿ãå ´åããã©ãã㯠undefined
ãè¿ãå¿
è¦ãããã¾ããæ¬¡ã®ã³ã¼ãã§ã¯ããããã£å¤ã®åå¾ããã©ãããã¾ãã
const p = new Proxy(
{},
{
get(target, property, receiver) {
console.log(`called: ${property}`);
return 10;
},
},
);
console.log(p.a);
// "called: a"
// 10
次ã®ã³ã¼ãã§ã¯ä¸å¤æ¡ä»¶ã«éåãã¾ãã
const obj = {};
Object.defineProperty(obj, "a", {
configurable: false,
enumerable: false,
value: 10,
writable: false,
});
const p = new Proxy(obj, {
get(target, property) {
return 20;
},
});
p.a; // TypeError is thrown
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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