What's the difference in using toString() compared to JSON.stringify()?

前端 未结 4 863
北荒
北荒 2020-12-08 04:28

In both the cases I get in output the content of the object:

alert(JSON.stringify(obj));

or

alert(obj.toString());
<         


        
4条回答
  •  不思量自难忘°
    2020-12-08 05:05

    Unless you have a custom object with custom .toString method returning JSON.stringify of that object, there is no obj that would give obj.toString() == JSON.stringify(obj).

    When obj is an array like [1,2,3] then .toString() gives:

    "1,2,3"
    

    And JSON.stringify:

    "[1,2,3]"
    

    These are close but not quite the same, the JSON serialized one has no ambiguity with commas and directly runs as Javascript or can be parsed as JSON.

    See:

    ["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
    

提交回复
热议问题