因为对象转为JSON时JSON.stringify()会把function过滤掉,那么咱们就把function转为字符串在去解决就可能达到要求了
const page={ version: "8.0.0.0", showCount: 5, id: "newTab483617", name: "", a:function(){console.log(12321)}}//对象转换为jsonconst 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)}}//对象转换为jsonconst 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 胜利转回