toString()
是JavaScript中常用的一個方法,它的功能是將一個數值或者對象轉化成字元串類型。在實際開發中,我們常常需要將一些數值或對象展示在前端頁面或者通過網路傳輸傳遞給後端,這時候就需要用到toString()
方法。本文將圍繞toString()
方法,從各個方面詳細講述它的用法和注意事項。
一、數據類型的toString()方法
JavaScript中,除了null和undefined兩個數據類型沒有toString()
方法,其他數值類型、字元串類型和布爾類型都有自己的toString()
方法。
1、數值類型toString()
數值類型的toString()
方法可以接受一個參數,該參數表示轉化後的進位,取值範圍是2~36。如果沒有傳遞參數,則默認輸出10進位形式的字元串。
let a = 10;
console.log(a.toString()); // "10"
console.log(a.toString(8)); // "12"
console.log(a.toString(16)); // "a"
2、字元串類型toString()
字元串類型的toString()
方法不接受參數,直接將自身轉化為字元串形式。
let str = "JavaScript";
console.log(str.toString()); // "JavaScript"
3、布爾類型toString()
布爾類型的toString()
方法不接受參數,將布爾值轉化成字元串”true”或”false”。
let bool = true;
console.log(bool.toString()); // "true"
二、對象類型的toString()方法
對象類型的toString()
方法需要根據情況重寫,否則會返回一個默認字元串。下面是幾個常見的對象類型的toString()
方法。
1、數組類型toString()
數組類型的toString()
方法重寫後,會返回用逗號分隔的每個元素拼成的字元串。
let arr = [1, 2, 3];
console.log(arr.toString()); // "1,2,3"
2、日期類型toString()
日期類型的toString()
方法重寫後,會返回日期時間的字元串表現形式。
let date = new Date();
console.log(date.toString()); // "Fri Sep 10 2021 09:59:41 GMT+0800 (中國標準時間)"
3、普通對象類型toString()
普通對象類型的toString()
方法需要手動重寫才能正確返回對象的字元串形式。
let obj = {
name: "Tom",
age: 18,
toString: function() {
return this.name + " is " + this.age + " years old.";
}
};
console.log(obj.toString()); // "Tom is 18 years old."
三、自定義toString()方法
我們可以通過重寫自定義的對象類型的toString()
方法,來讓該對象類型實現自己想要的字元串表現形式。
function Person(name, age) {
this.name = name;
this.age = age;
this.toString = function() {
return this.name + " is " + this.age + " years old.";
}
}
let p = new Person("Tom", 18);
console.log(p.toString()); // "Tom is 18 years old."
在上面的代碼中,我們通過自定義Person
對象的toString()
方法,來讓該對象以自定義的字元串形式展示。
四、注意事項
1、toString()方法返回的是一個新的字元串,而不是對原對象的修改
調用toString()
方法,會得到一個新的字元串,而不會對原對象進行修改。
let a = 10;
console.log(a.toString()); // "10"
console.log(a); // 10,沒有改變原數值
2、對象類型重寫toString()方法時,要避免陷入死循環
如果一個對象類型中的toString()方法,用類似this.toString()
的形式調用自身,就會陷入死循環。
function Person(name, age) {
this.name = name;
this.age = age;
this.toString = function() {
return this.toString(); // 錯誤示範,會陷入死循環
}
}
let p = new Person("Tom", 18);
console.log(p.toString()); // Maximum call stack size exceeded
五、總結
本文從數值類型、字元串類型和布爾類型的toString()
方法,以及對象類型的重寫toString()
方法的各個方面進行了詳細闡述,並且提醒了開發者在使用toString()
方法時要注意的事項。toString()
方法的靈活運用,將會為開發者在實際工作中帶來很大的便利。
原創文章,作者:AXGNK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/318078.html