【发布时间】:2018-11-02 04:34:23
【问题描述】:
JSON.stringify(value) 会将 JavaScript 值转换为 JSON 字符串。 JSON.parse(value) 会将有效的 JSON 字符串转换为 JavaScript 值(对象、数组或其他 JSON 可用的原语)。
您为什么要获取一个 JavaScript 值并通过 JSON 移动它?意味着取一个值,然后对其进行字符串化,然后将其解析回来。据我所知,它没有任何用途,只会浪费机器资源。
我问这是因为我遇到了这个功能:
function ser(value) {
return value == null ? null : JSON.parse(JSON.stringify(value))
}
它在 Marijn Heverbeke 的 Eloquent JavaScript 一书第 11 章的 crow-tech.js 中的 crow-tech.js 中找到,我想知道他为什么要这样做!
【问题讨论】:
-
除非您尝试对其进行深度克隆,否则字符串化然后解析没有意义,但是您不能通过网络发送 plain Javascript 对象 - 所以,将其字符串化一端,发送JSON字符串,然后在另一端解析(例如,如果两端都使用JS)
-
谢谢!我明白了:您可以通过此方法克隆(深拷贝)值,但删除了(函数/类型信息)。 (也不要将它用于大对象,因为它会产生性能问题 - 但可以用作小对象深度复制的快速简写,只有 JSON 数据)
标签: javascript json