Date.prototype[Symbol.toPrimitive]
åºçº¿
广æ³å¯ç¨
èª 2017å¹´4æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
Date å®ä¾ç [Symbol.toPrimitive]() æ¹æ³è¿å表示å½åæ¥æçåå§å¼ãæ ¹æ®ç»å®æç¤ºçä¸åï¼å
¶å¯è½æ¯åç¬¦ä¸²ææ°åã
å°è¯ä¸ä¸
// Depending on timezone, your results will vary
const date = new Date("20 December 2019 14:48");
console.log(date[Symbol.toPrimitive]("string"));
// Expected output: "Fri Dec 20 2019 14:48:00 GMT+0530 (India Standard Time)"
console.log(date[Symbol.toPrimitive]("number"));
// Expected output: 1576833480000
è¯æ³
date[Symbol.toPrimitive](hint)
è¿åå¼
ç»åºç Date çåå§å¼ãæ ¹æ®ä¼ å
¥åæ°çä¸åï¼å¯ä»¥è¿å string æ number ç±»åã
说æ
Date 对象ç [Symbol.toPrimitive]() æ¹æ³å¯ä»¥è¿åä¸ä¸ªåå§å¼ï¼ææ¯ stringï¼ææ¯ numberã
妿 hint æ¯ "string" æ "default"ï¼[Symbol.toPrimitive]() å°ä¼è°ç¨ toStringã妿 toString 屿§ä¸åå¨ï¼åè°ç¨ valueOfã妿 valueOf ä¹ä¸åå¨ï¼åæåºä¸ä¸ªTypeErrorã
妿 hint æ¯ "number"ï¼[Symbol.toPrimitive]() ä¼é¦å
å°è¯ valueOfï¼è¥å¤±è´¥åå°è¯ toStringã
彿æä¸ä¸ªåå§å¼å´æ¶å°ä¸ä¸ªå¯¹è±¡æ¶ï¼JavaScript å¯ä»¥èªå¨çè°ç¨ [Symbol.toPrimitive]() æ¹æ³æ¥å°ä¸ä¸ªå¯¹è±¡è½¬åæåå§å¼ï¼æä»¥ä½ å¾å°ä¼éè¦èªå·±è°ç¨è¿ä¸ªæ¹æ³ã
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.prototype-%symbol.toprimitive%> |