出于测试目的,我决定测试一个我写的函数,它返回一个DOMRect
对象。
在控制台中我可以看到DOMRect是完整的并且具有其所有属性。但是,当我有JSON.stringify(rect)
(其中rect是带有返回结果的变量)时,我得到空对象{}
。
我不知道这是否意味着DOMRect
有什么特别之处,或者JSON.stringify
是否做了我认为不会做的事情,即序列化对象的属性
问题是:为什么JSON.stringify不会在DOMRect
上运行(并且在其他一些对象上也会失败?
FWIW,我正在测试当前的Mac,并尝试过Firefox和Webkit。
答案 0 :(得分:2)
JSON.stringify()
不能用于任何DOM元素 - 您需要提取所需的数据并放入Object中。以前在DOM节点上JSON.stringify()
用于导致此错误:
TypeError: Converting circular structure to JSON
现在Chrome,Firefox等都输出"{}"
答案 1 :(得分:-1)
JSON.stringify仅适用于结构化数据。它不允许函数的字符串化。
答案 2 :(得分:-1)
DOMRect是一个函数因此,不允许使用JSON.stringify(),因为DOMRect包含“虚拟”属性。 JSON.stringify()依赖于Object.key(attr)。