Functionを含むJSONオブジェクト変換文字列と反転


対象がJSONになるとJSON.strigify()がfunctionをフィルタリングしますので、functionを文字列に変換して処理すれば、要求通りになります.
const page={
  version: "8.0.0.0", showCount: 5, id: "newTab483617", name: "",
  a:function(){console.log(12321)}
}
//     json
const str=JSON.stringify(page,function(key,val){
  if (typeof val === 'function') {
    return val + '';
  }
  return val;
})
console.log(str)
jsonは対象を回転する時functionがすべて文字列に処理されましたので、文字列をfunctionに変えます.ここでevalを使って文字列をfunctionに変えます.
const page={
  version: "8.0.0.0", showCount: 5, id: "newTab483617", name: "",
  a:function(){console.log(12321)}
}
//     json
const str=JSON.stringify(page,(key,val)=>{
  if (typeof val === 'function') {
    return val + '';
  }
  return val;
})
console.log(str)

// json        
var json = JSON.parse(str,(k,v)=>{
  if(v.indexOf && v.indexOf('function') > -1){
     return eval("(function(){return "+v+" })()")
  }
  return v;
})
console.log(json)
json.a()  //  12321