首页 > 解决方案 > JSON.parse(JSON.stringify(object_with_function)) != object_with_function

问题描述

所以我有以下代码:

alert(JSON.parse(JSON.stringify({func: function(){alert(1);}})) == {func: function(){alert(1);}});

基本上,我 JSON.parse 一个 JSON.stringify 对象(包含一个函数),结果与原始对象不同(警报时我得到了错误)

这让我陷入了游戏的保存进度功能。

帮助表示赞赏!

编辑:对不起,不好的例子,试试这个:

alert(JSON.parse(JSON.stringify({func: function(){alert(1);}})).func);

它警告未定义。

标签: javascript

解决方案


看到这个问题

JSON.stringify() 将对 JSON 支持的值进行编码。具有可以是对象、数组、字符串、数字和布尔值的值的对象。其他任何内容都将被忽略或抛出错误。函数不是 JSON 中受支持的实体。JSON 只处理纯数据,函数不是数据,而是具有更复杂语义的行为。

这意味着在具有方法的对象上使用 JSON.parse(JSON.stringify()) 将不等于尚未字符串化的对象。


推荐阅读