是否可以在javascript中序列化任何类对象?

问题描述 投票:0回答:2

我想在redux商店中存储东西,并想知道哪一个是可序列化的,哪一个不是。

  1. class MyClass {}
  2. 是myClass = new MyClass

具体来说,#1,#2是否可序列化? 什么是可串行化的测试/定义? JSON.stringify()是否正常工作?

https://github.com/markerikson/redux/blob/create-faq-page/docs/FAQ.md

我可以在我的商店状态中放置函数,承诺或其他不可序列化的项吗?

强烈建议您只将简单的可序列化对象,数组和基元放入商店。从技术上讲,可以将不可序列化的项目插入到商店中,但这样做会破坏持久化和重新水化商店内容的能力。

javascript redux
2个回答
1
投票

不。如果要检查某些内容是否可序列化,请检查object == JSON.parse(JSON.stringify(object));

以下是我在浏览器窗口中运行的一些示例:

3 == JSON.parse(JSON.stringify(3))
true
"foo" == JSON.parse(JSON.stringify("foo"))
true
class MyClass {}
undefined
MyClass == JSON.parse(JSON.stringify(MyClass))
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data [Learn More]

在这种情况下,它表示类根本无法序列化,因为JavaScript只返回undefined。


0
投票

方法和函数(以及任何可执行代码片段)无法序列化,因为您无法使用eval将它们重新水化。

© www.soinside.com 2019 - 2024. All rights reserved.