Если я преобразую вышеуказанный объект в JSON, используя var jSonString = JSON.stringify(testObject);
разницу между 2 (JS obj и JSON)?
JSON - это формат обмена данными. Это стандарт, который описывает, как упорядоченные списки и неупорядоченные карты, логические строки и числа могут быть представлены в строке. Так же, как XML и YAML - это способ передачи структурированной информации между языками, JSON - то же самое. С другой стороны, объект JavaScript - это физический тип. Как и массив PHP, класс / структура C ++, объект JavaScript является типом, внутренним для JavaScript.
Вот история. Представим, что вы купили мебель в магазине и хотите, чтобы она была доставлена. Однако на складе остается только модель дисплея, но вы соглашаетесь ее купить.
В магазине купленный комод - это живой объект:
var chestOfDrawers = {
color: "red",
numberOfDrawers: 4
}
Тем не менее, вы не можете отправить комод в сообщении, поэтому вы разбираете его (читай, строчите). Теперь это бесполезно с точки зрения мебели. Теперь это JSON. Это в форме плоской упаковки.
{"color":"red","numberOfDrawers":4}
Получив его, вы затем воссоздаете комод (читай, разбирай). Теперь он снова в форме объекта.
Причина использования JSON / XML и YAML состоит в том, чтобы обеспечить возможность передачи данных между языками программирования в формате, понятном для обоих участвующих языков; вы не можете дать PHP или C ++ свой объект JavaScript напрямую; потому что каждый язык представляет объект по-разному под капотом. Однако, поскольку мы преобразовали объект в нотацию JSON; то есть стандартизированный способ представления данных, мы можем передать представление объекта в формате JSON другому языку (C ++, PHP), они могут воссоздать объект JavaScript, который у нас был, в свой собственный объект на основе представления объекта в формате JSON.
Важно отметить, что JSON не может представлять функции или даты. Если вы попытаетесь структурировать объект с помощью члена-функции, функция будет исключена из представления JSON. Дата будет преобразована в строку;
JSON.stringify({
foo: new Date(),
blah: function () {
alert('hello');
}
}); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"