Object.prototype.toString()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
toString() 㯠Object ã¤ã³ã¹ã¿ã³ã¹ã®ãªãã¸ã§ã¯ãã§ããã®ãªãã¸ã§ã¯ãã表ãæååãè¿ãã¾ãããã®ã¡ã½ããã¯ãç¬èªã®å夿ãã¸ãã¯ã®ããã«æ´¾çãªãã¸ã§ã¯ãããªã¼ãã¼ã©ã¤ãããããã®ãã®ã§ãã
試ãã¦ã¿ã¾ããã
const map = new Map();
console.log(map.toString());
// äºæ³ãããçµæ: "[object Map]"
æ§æ
toString()
弿°
æ¢å®ã§ã¯ã toString() ã¯å¼æ°ãåãã¾ããããã ããObject ãç¶æ¿ãããªãã¸ã§ã¯ãã¯ããã©ã¡ã¼ã¿ã¼ãåãç¬èªã®å®è£
ã§ toString() ããªã¼ãã¼ã©ã¤ãã§ãã¾ããä¾ãã°ã Number.prototype.toString() ããã³ BigInt.prototype.toString() ã¡ã½ããã¯ããªãã·ã§ã³ã§å¼æ° radix ãåãã¾ãã
è¿å¤
ãªãã¸ã§ã¯ãã表ãæååã§ãã
解説
JavaScript 㯠toString ã¡ã½ããããªãã¸ã§ã¯ããããªããã£ãå¤ã«å¤æããããã«å¼ã³åºãã¾ãã toString ãå¼ã³åºãå¿
è¦ãããã®ã¯ç¨ã§ãã JavaScript ã¯ãããªããã£ãå¤ãæå¾
ããããªãã¸ã§ã¯ãã«ééããã¨ãèªåçã« toString ã¡ã½ãããå¼ã³åºãã¾ãã
ãã®ã¡ã½ããã¯æåå夿ã«ãã£ã¦åªå
çã«å¼ã³åºããã¾ãããæ°å¤å¤æã¨ããªããã£ãå¤æã¯ valueOf() ãåªå
çã«å¼ã³åºãã¾ãããã ããåºåºã® valueOf() ã¡ã½ããã¯ãªãã¸ã§ã¯ããè¿ãã®ã§ããªãã¸ã§ã¯ãã valueOf() ããªã¼ãã¼ã©ã¤ãããªãéããéå¸¸ã¯æå¾ã« toString() ã¡ã½ãããå¼ã³åºããã¾ããä¾ãã°ã +[1] 㯠1 ãè¿ãã¾ããããã㯠toString() ã¡ã½ããã "1" ãè¿ãããããæ°å¤ã«å¤æãããããã§ãã
Object.prototype ãç¶æ¿ãããã¹ã¦ã®ãªãã¸ã§ã¯ãï¼ null ãããã¿ã¤ããªãã¸ã§ã¯ããé¤ããã¹ã¦ã®ãªãã¸ã§ã¯ãï¼ã¯ toString() ã¡ã½ãããç¶æ¿ãã¾ããç¬èªãªãã¸ã§ã¯ãã使ããã¨ãã¯ãtoString() ããªã¼ãã¼ã©ã¤ããã¦ç¬èªã¡ã½ãããå¼ã³åºããç¬èªãªãã¸ã§ã¯ããæååå¤ã«å¤æã§ããããã«ãã¾ããã¾ãã[Symbol.toPrimitive]() ã¡ã½ããã追å ãããã¨ãã§ãã¾ãããã®ã¡ã½ããã§ã¯ã夿å¦çãããç´°ããå¶å¾¡ãããã¨ãã§ããã©ã®åã®å¤æã«ã¤ãã¦ã常㫠valueOf ã¾ã㯠toString ãããåªå
ããã¾ãã
åºåºã¨ãªã Object.prototype.toString() ããªã¼ãã¼ã©ã¤ãããã¦ãããªãã¸ã§ã¯ãã§ä½¿ç¨ããï¼ã¾ã㯠null ã undefined ã«å¯¾ãã¦å¼ã³åºãï¼ã«ã¯ã Function.prototype.call() ã¾ã㯠Function.prototype.apply() ãå¼ã³åºãå¿
è¦ããããæåã®å¼æ°ï¼thisArg ã¨å¼ã°ããï¼ã¨ãã¦æ¤æ»ããããªãã¸ã§ã¯ããæ¸¡ãã¾ãã
const arr = [1, 2, 3];
arr.toString(); // "1,2,3"
Object.prototype.toString.call(arr); // "[object Array]"
Object.prototype.toString() ã¯ã "[object Type]" ãè¿ãã Type ã®ã¨ããããªãã¸ã§ã¯ãåã«ãªãã¾ãããªãã¸ã§ã¯ãã«å¤ãæååã§ãã Symbol.toStringTag ããããã£ãããå ´åããã®å¤ã Type ã¨ãã¦ä½¿ç¨ããã¾ãã Map ããã³ Symbol ãå«ãå¤ãã®çµã¿è¾¼ã¿ãªãã¸ã§ã¯ãã«ã¯ã Symbol.toStringTag ãããã¾ãã ES6 以åã®ãªãã¸ã§ã¯ãã®ä¸ã«ã¯ Symbol.toStringTag ãæããªããã®ãããã¾ãããããã§ãç¹å¥ãªã¿ã°ãæã£ã¦ãã¾ããããã«ã¯æ¬¡ã®ãããªãã®ãããã¾ãï¼ã¿ã°ã¯ä¸è¨ã§æå®ãããååã¨åãã§ãï¼ã
ArrayFunctionï¼typeofã"function"ãè¿ããã®ãã¹ã¦ï¼ErrorBooleanNumberStringDateRegExp
arguments ãªãã¸ã§ã¯ã㯠"[object Arguments]" ãè¿ãã¾ãããã以å¤ã®ãã®ã¯ãã¹ã¦ãã¦ã¼ã¶ã¼å®ç¾©ã¯ã©ã¹ãå«ã¿ãç¬èªã® Symbol.toStringTag ããªãéãã "[object Object]" ãè¿ãã¾ãã
Object.prototype.toString() ã null ããã³ undefined ã«å¯¾ãã¦å¼ã³åºãã¨ããããã [object Null] ããã³ [object Undefined] ãè¿ãã¾ãã
ä¾
>ç¬èªãªãã¸ã§ã¯ãã® toString ã®ãªã¼ãã¼ã©ã¤ã
æ¢å®ã® toString() ã¡ã½ããã«ä»£ãã£ã¦å¼ã³åºããã颿°ãä½ããã¨ãã§ãã¾ãã toString() ã¡ã½ããã¯æååãè¿ãå¿
è¦ãããã¾ãããªãã¸ã§ã¯ããè¿ãããã®ã¡ã½ãããå夿ã®éã«æé»çã«å¼ã³åºãããå ´åããã®çµæã¯ç¡è¦ããã代ããã«ç¸å¯¾ã¡ã½ãã valueOf() ã®å¤ã使ããã¾ãããããã®ã¡ã½ããã®ã©ã¡ãããããªããã£ãå¤ãè¿ããªãå ´å㯠TypeError ãçºçãã¾ãã
以ä¸ã®ã³ã¼ã㯠Dog ã¯ã©ã¹ãå®ç¾©ãã¦ãã¾ãã
class Dog {
constructor(name, breed, color, sex) {
this.name = name;
this.breed = breed;
this.color = color;
this.sex = sex;
}
}
ãã®ã«ã¹ã¿ã ãªãã¸ã§ã¯ãä¸ã§ toString() ã¡ã½ãããå¼ã³åºããå ´åãã¡ã½ãã㯠Object ããç¶æ¿ãããæ¢å®å¤ãè¿ãã¾ãã
const theDog = new Dog("Gabby", "Lab", "chocolate", "female");
theDog.toString(); // "[object Object]"
`${theDog}`; // "[object Object]"
以ä¸ã®ã³ã¼ãã¯æ¢å®ã® toString() ã¡ã½ããã䏿¸ããã¾ãããã®ã¡ã½ããã¯ãªãã¸ã§ã¯ãã® name, breed, color, sex ãæ ¼ç´ããæååãçæãã¾ãã
class Dog {
constructor(name, breed, color, sex) {
this.name = name;
this.breed = breed;
this.color = color;
this.sex = sex;
}
toString() {
return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`;
}
}
ä¸è¨ã®ã³ã¼ãã®ä¸ã§ã Dog ãæååã®æèã§ä½¿ç¨ããããã³ã«ã JavaScript ã¯èªåçã« toString() 颿°ãå¼ã³åºãã以ä¸ã®æååãè¿ãã¾ãã
const theDog = new Dog("Gabby", "Lab", "chocolate", "female");
`${theDog}`; // "Dog Gabby is a female chocolate Lab"
toString() ã使ç¨ãã¦ãªãã¸ã§ã¯ãã¯ã©ã¹ã®å¤å¥
toString() ã¯ãã¹ã¦ã®ãªãã¸ã§ã¯ãã«å¯¾ãã(æ¢å®ã§ã¯) ãã®ã¯ã©ã¹ãå¾ãããã«ä½¿ç¨ãããã¨ãã§ãã¾ãã
const toString = Object.prototype.toString;
toString.call(new Date()); // [object Date]
toString.call(new String()); // [object String]
// Math ã«ã¯ Symbol.toStringTagãããã
toString.call(Math); // [object Math]
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
ãã®ãã㪠toString() ã®ä½¿ç¨ã¯ä¿¡é ¼ã§ãã¾ããããªãã¸ã§ã¯ã㯠Object.prototype.toString() ã®åä½ã Symbol.toStringTag ããããã£ãå®ç¾©ãããã¨ã§å¤æ´ã§ããããã«ãã£ã¦æ¬¡ã®ããã«äºæ³å¤ã®åä½ã«ãªãã¾ãã
const myDate = new Date();
Object.prototype.toString.call(myDate); // [object Date]
myDate[Symbol.toStringTag] = "myDate";
Object.prototype.toString.call(myDate); // [object myDate]
Date.prototype[Symbol.toStringTag] = "prototype polluted";
Object.prototype.toString.call(new Date()); // [object prototype polluted]
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.prototype.tostring> |