[英]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有幾個內置對象,
例如:
每個對象都有以不同方式實現的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.