共计 770 个字符,预计需要花费 2 分钟才能阅读完成。
因为对象转为 JSON 时 JSON.stringify() 会把 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 胜利转回
正文完
发表至: javascript
2020-12-16