Baseline Widely available
handler.set()
ã¯ããªãã¸ã§ã¯ãã® [[Set]]
å
é¨ã¡ã½ããã«å¯¾ãããã©ããã§ããããããã£ã®å¤ãè¨å®ãããã¨ã«å¯¾ãããã©ããã§ãã
const monster1 = { eyeCount: 4 };
const handler1 = {
set(obj, prop, value) {
if (prop === "eyeCount" && value % 2 !== 0) {
console.log("Monsters must have an even number of eyes");
} else {
return Reflect.set(...arguments);
}
},
};
const proxy1 = new Proxy(monster1, handler1);
proxy1.eyeCount = 1;
// Expected output: "Monsters must have an even number of eyes"
console.log(proxy1.eyeCount);
// Expected output: 4
proxy1.eyeCount = 2;
console.log(proxy1.eyeCount);
// Expected output: 2
æ§æ
new Proxy(target, {
set(target, property, value, receiver) {
}
});
弿°
次ã®å¼æ°ã¯ set()
ã¡ã½ããã«æ¸¡ããã¾ããthis
ã¯ãã³ãã©ã¼ã«ãã¤ã³ãããã¾ãã
target
ã¿ã¼ã²ãããªãã¸ã§ã¯ãã§ãã
property
ããããã£ãè¨å®ããååã¾ã㯠Symbol
ã§ãã
value
è¨å®ããããããã£ã®æ°ããå¤ã§ãã
receiver
å²ãå½ã¦ããã¨ãã¨è¡ããã¦ãããªãã¸ã§ã¯ãã§ããããã¯é常ããããã·ã¼ãã®ãã®ã§ãããããã set()
ãã³ãã©ã¼ã¯å
é¨çã«ãããã¿ã¤ããã§ã¼ã³ãæ§ã
ãªä»ã®æ¹æ³çµç±ã§å¼ã³åºããã¾ãã
ä¾ãã°ãã¹ã¯ãªããä¸ã« obj.name = "jen"
ããããobj
ã¯ãããã·ã¼ã§ã¯ãªããç¬èªã® .name
ããããã£ãæã£ã¦ãã¾ããããããããããã¿ã¤ããã§ã¼ã³ã§ãããã·ã¼ãæã£ã¦ãã¾ãããã®å ´åããã®ãããã·ã¼ã® set()
ãã³ãã©ã¼ãå¼ã°ãã¦ã obj
ã¯ã¬ã·ã¼ãã¼ã¨ãã¦æ¸¡ããã¾ãã
set()
ã¡ã½ããã¯è«çå¤ãè¿ãã¾ãã
true
ãè¿ãã¨å²ãå½ã¦ãæåãããã¨ã示ãã¾ããset()
ã¡ã½ããã®è¿å¤ã false
ã§ã峿 ¼ã¢ã¼ãã§å²ãå½ã¦ãèµ·ãã£ãå ´åã TypeError
ãçºçãã¾ãããã®ãã©ããã¯ä¸è¨ã®æä½ã«ä»å ¥ã§ãã¾ãã
proxy[foo] = bar
ã proxy.foo = bar
Reflect.set()
ä»ã«ãã[[Set]]
å
é¨ã¡ã½ãããå¼ã³åºãããããæä½ã«ä»å
¥ã§ãã¾ãã
以ä¸ã®ä¸å¤æ¡ä»¶ã«éåãã¦ããå ´åããããã·ã¼ã§ TypeError
ãçºçãã¾ãã
[[Set]]
屿§ã¨ã㦠undefined
ãæã¤è¨å®ä¸å¯ã®ã¢ã¯ã»ã¹ããããã£ã®å ´åãããããã£ã®å¤ãè¨å®ãããã¨ã¯ã§ãã¾ãããset()
ãã³ãã©ã¼ãã false
ãè¿ãå ´åã TypeError
ä¾å¤ãçºçãã¾ããæ¬¡ã®ã³ã¼ãã§ã¯ããããã£ã®å¤ã®è¨å®ããã©ãããã¾ãã
const p = new Proxy(
{},
{
set(target, prop, value, receiver) {
target[prop] = value;
console.log(`property set: ${prop} = ${value}`);
return true;
},
},
);
console.log("a" in p); // false
p.a = 10; // "property set: a = 10"
console.log("a" in p); // true
console.log(p.a); // 10
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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