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

javascript

Solution

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

Problem

In both the cases I get in output the content of the object: ``` alert(JSON.stringify(obj)); ``` or ``` alert(obj.toString()); ``` so... what's the difference? what are the advantages or disadvantages of each one? Are there practical examples to show the difference?

Original source