String.prototype.toString()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
String ç toString() æ¹æ³è¿å该å符串çå¼ã
å°è¯ä¸ä¸
const stringObj = new String("foo");
console.log(stringObj);
// Expected output: String { "foo" }
console.log(stringObj.toString());
// Expected output: "foo"
è¯æ³
toString()
è¿åå¼
表示æå®å符串å¼çå符串ã
æè¿°
String 对象éåäº Object ç toString æ¹æ³ï¼å®ä¸ä¼ç»§æ¿ Object.prototype.toString()ãå¯¹äº String å¼ï¼toString æ¹æ³è¿åå符串æ¬èº«ï¼å¦æå®æ¯åå§å¼ï¼æ String 对象å°è£
çå符串ãå®çå®ç°ä¸ String.prototype.valueOf() å®å
¨ç¸åã
toString() æ¹æ³è¦æ±å
¶ this å¼ä¸º String åå§å¼æå°è£
对象ã对äºå
¶ä» this å¼ï¼å®ä¼æåº TypeError èä¸å°è¯å°å
¶è½¬æ¢ä¸ºå符串å¼ã
ç±äº String 没æ [Symbol.toPrimitive]() æ¹æ³ï¼å½ä¸ä¸ª String å¯¹è±¡å¨ææå符串çä¸ä¸æä¸ä½¿ç¨æ¶ï¼æ¯å¦å¨æ¨¡æ¿åé¢éä¸ï¼ï¼JavaScript ä¼èªå¨è°ç¨ toString() æ¹æ³ãç¶èï¼String åå§å¼ä¸ä¼ä½¿ç¨ toString() æ¹æ³æ¥è¿è¡å符串强å¶è½¬æ¢ââå 为å®ä»¬å·²ç»æ¯åç¬¦ä¸²ï¼æä»¥ä¸ä¼è¿è¡è½¬æ¢ã
String.prototype.toString = () => "å·²ç»è¢«éåäº";
console.log(`${"foo"}`); // "foo"
console.log(`${new String("foo")}`); // "å·²ç»è¢«éåäº"
示ä¾
>ä½¿ç¨ toString()
以ä¸ç¤ºä¾è¾åºä¸ä¸ª String 对象çå符串å¼ï¼
const x = new String("Hello world");
console.log(x.toString()); // "Hello world"
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.prototype.tostring> |