簡體   English   中英

對象使用js toString()方法轉換會產生奇怪的結果嗎?

[英]objects convert using js toString() method gives Odd result?

下面的代碼顯示了使用toString()方法進行的幾種數據類型轉換的結果。 所有其他數據類型可以用轉換為字符串toString()方法,但是當嘗試使用對象轉換為字符串toString()方法它給奇結果是“[對象的對象]”

var b =1
b.toString();// produce "1"


var x=function(){var y=1;};
x.toString();// produce "function (){var y=1;}"


var z = [1,2];
z.toString();// produce "1,2"

var a = new Date;
//a = Date {Thu Dec 25 2014 22:44:32 GMT+0530 (Sri Lanka Standard Time)}
a.toString();// produce "Thu Dec 25 2014 22:44:32 GMT+0530 (Sri Lanka Standard Time)"



var obj = { name: 'John' }
obj.toString();// produce "[object Object]"

我想知道當我們嘗試使用toString()方法將對象轉換為字符串時,為什么會給出奇怪的結果。

而不是給出“ [object Object]”,為什么toString()方法不會返回此值“ {{name:'John'}”

在Javascript中,所有對象都繼承自Object。 對於自定義對象,如果不定義toString()方法,它將從其父類繼承它。 因此obj.toString()打印“ [object Object]”,因為它是Object類型的對象(原始類型)。

Javascript有幾個內置對象,

例如:

  • JavaScript數字對象
  • JavaScript布爾對象
  • JavaScript字符串對象
  • JavaScript數組對象
  • JavaScript日期對象
  • JavaScript數學對象
  • JavaScript RegExp對象

每個對象都有以不同方式實現的toString方法。


對於用戶定義的對象,默認的toString方法返回[object Object] 您可以根據需要覆蓋它。

 function Car(type){ this.type = type; } Car.prototype.toString = function(){ return this.type + " car"; } var car = new Car('bmw'); alert(car.toString());// produce "bmw car" 

您甚至還可以重寫Object.prototype.toString方法(但可能不是一個好主意)。

 Object.prototype.toString = function() { return JSON.stringify(this); ; } var obj = { name: 'John' } alert(obj.toString());// produce "{ "name": "John"}" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM