是否可以在javascript中序列化任何类对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在javascript中序列化任何类对象?相关的知识,希望对你有一定的参考价值。
我想在redux商店中存储东西,并想知道哪一个是可序列化的,哪一个不是。
- class MyClass {}
- 是myClass = new MyClass
具体来说,#1,#2是否可序列化? 什么是可串行化的测试/定义? JSON.stringify()是否正常工作?
https://github.com/markerikson/redux/blob/create-faq-page/docs/FAQ.md
我可以在我的商店状态中放置函数,承诺或其他不可序列化的项吗?
强烈建议您只将简单的可序列化对象,数组和基元放入商店。从技术上讲,可以将不可序列化的项目插入到商店中,但这样做会破坏持久化和重新水化商店内容的能力。
答案
不。如果要检查某些内容是否可序列化,请检查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。
另一答案
方法和函数(以及任何可执行代码片段)无法序列化,因为您无法使用eval
将它们重新水化。
以上是关于是否可以在javascript中序列化任何类对象?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 WCF wsdl 中包含一个 DataContract 类,而该类不属于任何 OperationContract?