JSON не может полностью выполнять функции, он обрабатывает их точно так же, как значения undefined или null. Вы можете проверить точный алгоритм в EcmaScript 5.1 §15.12.3, см. Также описание в MDN.
Однако вы, конечно, можете выразить выражение функции, выставив их в строку, попробуйте
У JSON нет средств для представления функции. Это формат данных, разработанный для простоты и совместимости между языками (и функция является последней вещью, которая будет совместима между языками).
Если значение undefined, при преобразовании встречается функция или значение XML, оно либо опускается (когда оно найдено в объекте), либо подвергается цензуре на ноль (когда оно находится в массиве).
yourFunctionName.toString(); также приведёт в порядок функцию
Ответ 5
Если вы хотите использовать JSON.stringify также для преобразования функций и собственных объектов, вы можете передать функцию преобразователя в качестве второго аргумента:
const data = {
fn: function(){}
}
function converter(key, val) {
if (val && typeof val === 'function' || val.constructor === RegExp) {
return String(val)
}
return val
}
console.log(JSON.stringify(data, converter, 2))
Верните undefined из функции конвертера, если хотите опустить результат.
Третий параметр - это количество пробелов, которые вы хотите сделать для отступа (необязательно).