Baseline Widely available
toString()
æ¹æ³è¿åä¸ä¸ªè¡¨ç¤ºè¯¥å¯¹è±¡çå符串ãè¯¥æ¹æ³æ¨å¨éåï¼èªå®ä¹ï¼æ´¾ç类对象çç±»å转æ¢çé»è¾ã
function Dog(name) {
this.name = name;
}
const dog1 = new Dog("Gabby");
Dog.prototype.toString = function dogToString() {
return `${this.name}`;
};
console.log(dog1.toString());
// Expected output: "Gabby"
è¯æ³ åæ°
é»è®¤æ
åµä¸ï¼toString()
䏿¥åä»»ä½åæ°ãç¶èï¼ç»§æ¿èª Object
ç对象å¯è½ç¨å®ä»¬èªå·±çå®ç°éåå®ï¼è¿äºå®ç°å¯ä»¥æ¥ååæ°ãä¾å¦ï¼Number.prototype.toString()
å BigInt.prototype.toString()
æ¹æ³æ¥åä¸ä¸ªå¯éç radix
åæ°ã
ä¸ä¸ªè¡¨ç¤ºè¯¥å¯¹è±¡çå符串ã
æè¿°JavaScript è°ç¨ toString
æ¹æ³å°å¯¹è±¡è½¬æ¢ä¸ºä¸ä¸ªåå§å¼ãä½ å¾å°éè¦èªå·±å»è°ç¨ toString
æ¹æ³ï¼å½éå°éè¦åå§å¼ç对象æ¶ï¼JavaScript ä¼èªå·±è°ç¨å®ã
è¯¥æ¹æ³ç±å符串转æ¢ä¼å
è°ç¨ï¼ä½æ¯æ°åç强å¶è½¬æ¢ååå§å¼ç强å¶è½¬æ¢ä¼ä¼å
è°ç¨ valueOf()
ãç¶èï¼å ä¸ºåºæ¬ç valueOf()
æ¹æ³è¿åä¸ä¸ªå¯¹è±¡ï¼toString()
æ¹æ³é常å¨ç»ææ¶è°ç¨ï¼é¤é对象éåäº valueOf()
ãä¾å¦ï¼+[1]
è¿å 1
ï¼å 为å®ç toString()
æ¹æ³è¿å "1"
ï¼ç¶åå°å
¶è½¬æ¢ä¸ºæ°åã
ææç»§æ¿èª Object.prototype
ç对象ï¼å³ï¼é¤äº null
-prototype 对象ä¹å¤ç对象ï¼é½ç»§æ¿ 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
ï¼ä½ä»ç¶æä¸ä¸ªç¹æ®çæ ç¾ãå®ä»¬å
æ¬ï¼æ ç¾ä¸ä¸é¢ç»åºçç±»ååç¸åï¼ï¼
arguments
对象è¿å "[object Arguments]"
ãå
¶ä»ææå
容ï¼å
æ¬ç¨æ·èªå®ä¹çç±»ï¼é¤éæä¸ä¸ªèªå®ä¹ç Symbol.toStringTag
ï¼å¦åé½å°è¿å "[object Object]"
ã
å¨ null
å undefined
ä¸è°ç¨ Object.prototype.toString()
åå«è¿å [object Null]
å [object Undefined]
ã
ä½ å¯ä»¥å建ä¸ä¸ªè¦è°ç¨ç彿°æ¥ä»£æ¿é»è®¤ç toString()
æ¹æ³ãä½ å建ç toString()
彿°åºè¯¥è¿åä¸ä¸ªå符串å¼ã妿å®è¿åä¸ä¸ªå¯¹è±¡ï¼å¹¶ä¸å¨ç±»åè½¬æ¢æé´éå¼è°ç¨å®ï¼é£ä¹å¿½ç¥å®çç»æï¼å¹¶ä½¿ç¨ç¸å
³æ¹æ³ valueOf()
çå¼ï¼æè
è¿äºæ¹æ³é½ä¸è¿ååå§å¼ï¼åæåº TypeError
ã
以ä¸ä»£ç å®ä¹äº Dog
ç±»ã
class Dog {
constructor(name, breed, color, sex) {
this.name = name;
this.breed = breed;
this.color = color;
this.sex = sex;
}
}
å¦æä½ å¨ Dog
å®ä¾ä¸æ¾ç¤ºæè
éå¼çè°ç¨ 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 has its Symbol.toStringTag
toString.call(Math); // [object Math]
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
以è¿ç§æ¹å¼ä½¿ç¨ toString()
æ¯ä¸å¯é çï¼å¯¹è±¡å¯ä»¥éè¿å®ä¹ Symbol.toStringTag
屿§æ¥æ´æ¹ Object.prototype.toString()
çè¡ä¸ºï¼ä»èå¯¼è´ææ³ä¸å°çç»æãä¾å¦ï¼
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]
è§è æµè§å¨å
¼å®¹æ§ åè§
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