在這兩種情況下我在輸出獲取對象的內容:使用toString()與JSON.stringify()相比有什麼區別?
alert(JSON.stringify(obj));
或
alert(obj.toString());
所以...有什麼區別?每個人的優點和缺點是什麼?
是否有實際的例子顯示不同?
在這兩種情況下我在輸出獲取對象的內容:使用toString()與JSON.stringify()相比有什麼區別?
alert(JSON.stringify(obj));
或
alert(obj.toString());
所以...有什麼區別?每個人的優點和缺點是什麼?
是否有實際的例子顯示不同?
爲對象說
obj = { a: 'a', '1': 1 }
obj.toString()
給出
"[object Object]"
JSON.stringify(obj)
給出
"{"1":1,"a":"a"}"
對於.toString(),缺省值被返回時的自變量類型是一個對象。 JSON.stringify在另一方面返回JSON文本,可以通過使用JSON.parse
正如你可能已經注意到,當你嘗試(希望)被轉換回JSON對象,調用.toString()
這任何對象繼承(*)從Object.prototype.toString()
,返回[object Object]
。
多數民衆贊成在內部定義,從一個對象返回內部名稱[Class]
。當然,其他對象可以重寫此方法(請記住,它最初只在原型鏈上定義),並返回幾乎任何東西。
JSON.stringify()
另一方面,是JSON對象的一種方法,哪種將的對象結構串行化爲字符串版本。因此,Javascript對象表示法,它將描述一個對象,其中所有嵌套結構都是純的ascii字符串。
(*)除外:與Object.create(null);
創建除非你有自定義的.toString
方法返回該對象的JSON.stringify
一個自定義對象的對象,沒有obj
,會給obj.toString() == JSON.stringify(obj)
。
當obj
就像[1,2,3]
數組然後.toString()
給出:
"1,2,3"
而且JSON.stringify
:
"[1,2,3]"
這些都是接近但不完全一樣,JSON序列化的一個有逗號沒有歧義並直接以Javascript運行或可以解析爲JSON。
參見:
["1,",2,3].toString();
//"1,,2,3" ... so you can't just split by comma and get original array
//it is in fact impossible to restore the original array from this result
JSON.stringify(["1,",2,3])
//'["1,",2,3]'
//original array can be restored exactly
是'obj'在你的使用情況還是什麼的陣列? – 2013-04-05 12:38:12
我在這裏沒有看到研究工作。 – thinklinux 2013-04-05 12:41:42
@FabrícioMatté甚至數組toStrings例如'「1,2,3」',而JSON字符串相同的數組會給''[1,2,3]「'。 – Esailija 2013-04-05 12:41:50