const a = {
test: 1,
func() {
console.log(1111)
}
}
const b = JSON.stringify(a)
console.log(b) // {"test":1}
如示例,在对一个包含function的对象进行JSON.stringify()时,function会被忽略掉,请问如何解决这种问题
const a = {
test: 1,
func() {
console.log(1111)
}
}
const b = JSON.stringify(a)
console.log(b) // {"test":1}
如示例,在对一个包含function的对象进行JSON.stringify()时,function会被忽略掉,请问如何解决这种问题
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
JSON 是一种数据的序列化、反序列化方案,而 function 不是数据,就更不是 JSON 的合法内容了。所以被舍弃掉才是正常的,没有“问题”,不需要“解决问题”。
如果你出于某种非常不合理的需求,需要把一个 function 序列化了,可以自己约定一种序列化方式。比如先
toString()
转成字符串;反序列化时eval
。反序列化就不写了,反过来
eval
就好了。注:这种方式仅对自定义函数有效,对 ES 中内置函数无效。