一尘不染

是否有可能让JSON.stringify保存功能?

json

拿这个对象:

x = {
 "key1": "xxx",
 "key2": function(){return this.key1}
}

如果我这样做:

y = JSON.parse( JSON.stringify(x) );

然后y将返回{ "key1": "xxx" }。通过stringify传递函数有什么能做的吗?使用“ ye goode olde
eval()”可以创建具有附加功能的对象,但是打包该对象又是什么呢?


阅读 136

收藏
2020-07-27

共1个答案

一尘不染

您不能打包函数,因为任何序列化程序都看不到函数关闭的数据。甚至Mozilla uneval也无法正确打包闭包。

最好的选择是使用复活器和替换器。

https://yuilibrary.com/yui/docs/json/json-freeze-
thaw.html

传递给JSON.parse的reviver函数将应用于从最深的密钥到最高级别的原始解析对象中的所有key:value对。在我们的例子中,这意味着名称和发现的属性将通过齐整器传递,然后包含那些键的对象将通过。

2020-07-27