JSON - это хороший способ передать сложные данные из моего серверного кода в клиентский JavaScript. Например, в PHP я могу написать:
<script type="text/javascript>
var MyComplexVariable = <?= BigFancyObjectGraph.GetJSON() ?>;
DoMagic(MyComplexVariable);
</script>
Это довольно круто, но иногда вы хотите передать больше базовой даты, например даты или даже определения функций. Есть простой и прямой способ сделать это, например:
<script type="text/javascript>
var MyComplexVariable = {
'SimpleProperty' : 42,
'FunctionProperty' : function()
{
return 6*7;
},
'DateProperty' : new Date(989539200000),
'ArbitraryProperty' : GetTheMeaningOfLifeUniverseAndEverything()
};
DoMagic(MyComplexVariable);
</script>
И это работает как прелесть во всех браузерах, которые я видел до сих пор. Но согласно JSON.org такой синтаксис недопустим. С другой стороны, я видел, что этот синтаксис используется во многих местах, включая некоторые популярные JavaScript-фреймворки. Итак ...
Могу ли я ожидать каких-либо проблем, если использую «неподдерживаемые» функции JSON, как указано выше? Почему это неправильно или нет?
Добавлено уточнение: Если бы я ожидал, что мой JSON будет использован каким-то неизвестным сторонним программным обеспечением или даже известным анализатором, который не был браузером, то такая экзотика действительно, скорее всего, не будет работать, и я не пытаться встраивать их. Но меня интересует случай, когда код JSON написан непосредственно внутри блока кода JavaScript, который выполняется интернет-браузером. Как и в приведенных выше примерах.