javascript - 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);
它警告未定义。
解决方案
看到这个问题。
JSON.stringify() 将对 JSON 支持的值进行编码。具有可以是对象、数组、字符串、数字和布尔值的值的对象。其他任何内容都将被忽略或抛出错误。函数不是 JSON 中受支持的实体。JSON 只处理纯数据,函数不是数据,而是具有更复杂语义的行为。
这意味着在具有方法的对象上使用 JSON.parse(JSON.stringify()) 将不等于尚未字符串化的对象。
推荐阅读
- sql - Rails 如何查询多个连接
- firebase - 使用 Firebase 将 Gridview 按钮功能移至新屏幕
- django - 如何在 Pycharm 中修改 Django Console 的默认启动脚本
- python - Jupyter Notebook io.StringIO 作为输出
- node.js - NodeJs MongDB 更新失败,来自另一个实体的 ObjectID ref
- ios - SceneKit - 定位 SCNCamera 并允许对象旋转
- html - 如何在ngfor迭代中过滤JSON数据并在角度9中获取指定值
- android - Flutter build apk - 请更新您的 settings.gradle 文件
- python - 在循环中等待 pool.apply_async
- kotlin - foo().collect{...} 和 launch { foo().collect{...} } 有什么区别?