JSON - отличный способ передать сложные данные из моего кода на стороне сервера на клиентскую версию JavaScript. Например, в PHP я могу написать:Использует передовые конструкции (функции, новые, вызовы функций) в безопасном JSON?
<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 потребляться каким-то неизвестное программным обеспечением 3 партии, или даже известный анализатор, который не был браузером, то такая экзотика бы действительно, скорее всего, не работает, и я бы не пытаться для их внедрения. Но меня интересует случай, когда код JSON написан непосредственно внутри кодового блока JavaScript, который выполняется интернет-браузером. Как и вышеприведенные примеры.
Если бы я использовал его только для данных, где целевой парсер скорее всего не был бы браузером, то я бы согласился с вами. Но я спрашиваю о сценарии, в котором я встраиваю JavaScript непосредственно в код моей клиентской части JavaScript. Он будет выполнен браузером. –