JS toString()方法:返回一個物件的字串

2020-07-16 10:05:11
JavaScript toString() 是 Object 的原型方法(也稱實體方法),它定義在 Object.prototype 物件之上,所有 Object 的範例物件都會繼承 toString() 方法。

toString() 方法能夠返回一個物件的字串,它返回的字串比較靈活,可能是一個具體的值,也可能是一個物件的型別識別符號。

toString() 的語法格式如下:

object.toString()

返回值:返回一個表示該物件的字串。

範例1

下面程式碼顯示物件範例與物件型別的 toString() 原型方法返回值是不同的。
function F (x, y) {  //建構函式
    this.x = x;
    this.y = y;
}
var f = new F(1, 2);  //範例化物件
console.log(F.toString());  //返回函數的原始碼
console.log(f.toString());  //返回字串"[object Object]"
toString() 原型方法返回資訊簡單,為了能夠返回更多有用資訊,使用者可以重寫該方法。例如,針對範例物件返回的字串都是 "[object Object]",可以對其進行擴充套件,讓物件範例能夠返回建構函式的原始碼。
Object.prototype.toString = function () {
    return this.constructor.toString();
}
呼叫 f.toString() ,則返回函數的原始碼,而不是字串 "[object Object]"。當然,重寫方法不會影響 JavaScript 內建物件的 toString() 返回值,因為它們都是唯讀的。
console.log(f.toString());  //返回函數的原始碼
當把資料轉換為字串時,JavaScript 一般都會呼叫 toString() 原型方法來實現。由於不同型別的物件在呼叫該方法時,所轉換的字串都不同,而且都有規律,所以開發人員常用它來判斷物件的型別,彌補 typeof 運算子和 constructor 屬性在檢測物件型別的不足。

範例2

當自定義型別時,使用者可以重置 toString() 原型方法,自定義物件的資料型別。下面範例為自定義型別 Me 定義一個標識字串 "[object Me]"。
function Me() {}  //自定義資料型別
Me.prototype.toString = function () {  //自定義Me資料型別的toString()方法
    return "[object Me]";
}
var me = new Me();
console.log(me.toString());  //返回"[object Me]"
console.log(Object.prototype.toString.apply(me));  //預設返回"[object Object]"

Object 還定義了 toLocaleString() 方法,該方法主要作用——留出一個介面,允許不同的物件返回針對原生的字串表示。在預設情況下,toLocaleString() 方法返回值與 toString() 原型方法返回值完全相同。

目前,主要有 3 個物件自定義了 toLocaleString() 方法。
  • Array.prototype.toLocaleString()
  • Number.prototype.toLocaleString()
  • Date.prototype.toLocaleString()
在 Array 中重寫 toString(),讓其返回陣列元素值的字串組合;在 Date 中重寫 toString(),讓其返回當前日期字串表示;在 Number 中重寫 toString(),讓其返回數位的字串表示;在 Date 中重寫 toLocaleString(),讓其返回當地格式化日期字串。