Baseline Widely available
Symbol.toPrimitive
ã¯éçãã¼ã¿ããããã£ã§ãã¦ã§ã«ãã¦ã³ã·ã³ãã«ã§ãã Symbol.toPrimitive
ã表ãã¾ãããã¹ã¦ã®å夿ã¢ã«ã´ãªãºã ã«ããã¦ããã¹ã¦ã®å夿ã¢ã«ã´ãªãºã ã«ããã¦ããªãã¸ã§ã¯ãä¸ã§ãã®ã·ã³ãã«ã使ã£ã¦ããã® valueOf()
ã toString()
ã¡ã½ããã使ç¨ããåã«ãæã¾ããåãåãå
¥ãããªãã¸ã§ã¯ãã®ããªããã£ã表ç¾ãè¿ãã¡ã½ããã調ã¹ã¾ãã
const object1 = {
[Symbol.toPrimitive](hint) {
if (hint === "number") {
return 42;
}
return null;
},
};
console.log(+object1);
// Expected output: 42
å¤
ã¦ã§ã«ãã¦ã³ã·ã³ãã« Symbol.toPrimitive
ã§ãã
Symbol.toPrimitive
ããããã£ã«ããï¼é¢æ°å¤ã¨ãã¦ä½¿ç¨ãããã¨ã§ï¼ããªãã¸ã§ã¯ããããªããã£ãå¤ã«å¤æãããã¨ãã§ããããã«ãªãã¾ãã颿°ã¯ãããªããã£ãå¤ã®çµæã¨ãã¦å¥½ã¾ããåãæå®ããæåå弿°ã® hint
ã¨ä¸ç·ã«å¼ã³åºããã¾ããhint
弿°ã¯ã "number
", "string
", "default
" ã®ããããã«ãªãã¾ãã
"number"
ãã³ãã¯ãæ°å¤å¤æã¢ã«ã´ãªãºã ã§ä½¿ç¨ããã¾ãã"string"
ãã³ãã¯ãæåå夿ã¢ã«ã´ãªãºã ã§ä½¿ç¨ããã¾ãã"default"
ãã³ãã¯ãããªããã£ã夿ã¢ã«ã´ãªãºã ã§ä½¿ç¨ããã¾ãããã³ãã¯ãåªå
é ä½ã®å¼±ãã·ã°ãã«ã¨ãã¦ã®ã¿æ©è½ããå®è£
ã§ãããç¡è¦ããã®ã¯èªç±ã§ãï¼Symbol.prototype[Symbol.toPrimitive]()
ãããã§ããããã«ï¼ã[Symbol.toPrimitive]()
ã¯ããªããã£ããè¿ããªããã°ãªãã¾ãããããã§ãªãå ´å㯠TypeError
ãçºçãã¾ãã
[Symbol.toPrimitive]
ããããã£ãæããªããªãã¸ã§ã¯ãã¯ãvalueOf()
ã¡ã½ãã㨠toString()
ã¡ã½ãããç°ãªãé åºã§å¼ã³åºããã¨ã§ããªããã£ãã«å¤æããã¾ãããããã«ã¤ãã¦ã¯å夿ã®ç¯ã§è©³ãã説æãã¾ãã[Symbol.toPrimitive]()
ã§ã¯ãããªããã£ã夿å¦çãå®å
¨ã«å¶å¾¡ã§ãã¾ããä¾ãã°ãDate.prototype[Symbol.toPrimitive]()
ã¯ã"default"
ã "string"
ã§ãããã®ããã«æ±ãã valueOf()
ã®ä»£ããã« toString()
ãå¼ã³åºãã¾ããSymbol.prototype[Symbol.toPrimitive]()
ã¯ãã³ããç¡è¦ãã常ã«ã·ã³ãã«ãè¿ãã¾ããã¤ã¾ããæååã³ã³ããã¹ãã§ã Symbol.prototype.toString()
ã¯å¼ã³åºããããSymbol
ãªãã¸ã§ã¯ãã¯å¸¸ã« String()
ãä»ãã¦æç¤ºçã«æååã«å¤æããå¿
è¦ãããã¾ãã
次ã®ä¾ã¯ Symbol.toPrimitive
ããããã£ããªãã¸ã§ã¯ããã夿ãããããªããã£ãå¤ãä¿®æ£ããæ¹æ³ã説æãã¾ãã
// Symbol.toPrimitive ããããã£ãæããªããªãã¸ã§ã¯ãã
const obj1 = {};
console.log(+obj1); // NaN
console.log(`${obj1}`); // "[object Object]"
console.log(obj1 + ""); // "[object Object]"
// Symbol.toPrimitive ããããã£ãæã¤ãªãã¸ã§ã¯ãã
const obj2 = {
[Symbol.toPrimitive](hint) {
if (hint === "number") {
return 10;
}
if (hint === "string") {
return "hello";
}
return true;
},
};
console.log(+obj2); // 10 â hint 㯠"number"
console.log(`${obj2}`); // "hello" â hint 㯠"string"
console.log(obj2 + ""); // "true" â hint 㯠"default"
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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