Array.prototype.toString()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
toString() æ¹æ³è¿åä¸ä¸ªå符串ï¼è¡¨ç¤ºæå®çæ°ç»åå
¶å
ç´ ã
å°è¯ä¸ä¸
const array1 = [1, 2, "a", "1a"];
console.log(array1.toString());
// Expected output: "1,2,a,1a"
è¯æ³
toString()
è¿åå¼
ä¸ä¸ªè¡¨ç¤ºæ°ç»å ç´ çå符串ã
æè¿°
Array 对象è¦çäº Object ç toString æ¹æ³ãæ°ç»ç toString æ¹æ³å®é
ä¸å¨å
é¨è°ç¨äº join() æ¹æ³æ¥æ¼æ¥æ°ç»å¹¶è¿åä¸ä¸ªå
å«æææ°ç»å
ç´ çå符串ï¼å
ç´ ä¹é´ç¨éå·åéã妿 join æ¹æ³ä¸å¯ç¨æè
䏿¯å½æ°ï¼åä¼ä½¿ç¨ Object.prototype.toString æ¥ä»£æ¿ï¼å¹¶è¿å [object Array]ã
const arr = [];
arr.join = 1; // å° `join` éæ°èµå¼ä¸ºé彿°çå¼
console.log(arr.toString()); // [object Array]
console.log(Array.prototype.toString.call({ join: () => 1 })); // 1
彿°ç»éè¦è¢«è¡¨ç¤ºä¸ºææ¬å¼ï¼æè
彿°ç»å¨åç¬¦ä¸²æ¼æ¥ä¸è¢«å¼ç¨æ¶ï¼JavaScript ä¼èªå¨è°ç¨ toString() æ¹æ³ã
示ä¾
>ä½¿ç¨ toString()
const array1 = [1, 2, "a", "1a"];
console.log(array1.toString()); // "1,2,a,1a"
å¨ç¨çæ°ç»ä¸ä½¿ç¨ toString()
ä¸ join() çè¡ä¸ºä¸è´ï¼toString() å°ç©ºæ§½è§ä¸º undefined å¹¶çæä¸ä¸ªé¢å¤çåé符ï¼
console.log([1, , 3].toString()); // '1,,3'
å¨éæ°ç»å¯¹è±¡ä¸ä½¿ç¨ toString()
toString() æ¯éç¨çã宿æ this å
·æ join() æ¹æ³ï¼å¦æä¸åå¨ï¼åä½¿ç¨ Object.prototype.toString()ã
console.log(Array.prototype.toString.call({ join: () => 1 }));
// 1; ä¸ä¸ªæ°å
console.log(Array.prototype.toString.call({ join: () => undefined }));
// undefined
console.log(Array.prototype.toString.call({ join: "not function" }));
// "[object Object]"
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.tostring> |