JSON.stringify 函数与 Object.defineProperty 的坑:不可枚举属性无法写入
Posted 秋意正寒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON.stringify 函数与 Object.defineProperty 的坑:不可枚举属性无法写入相关的知识,希望对你有一定的参考价值。
例子
const obj = {}
Object.defineProperty(obj, \'prop\', {
value: 10
})
JSON.stringify(obj) // 输出:{}
原因
好多博客介绍的是 “不可枚举” 的属性不会写入字符串,我也知道 function
、日期、正则等无法写入,可万万没想到自己写的 Object.defineProperty
函数也是造成 JSON 无法序列化的原因,那就是一个非常重要的选项:enumerable
。
改进
const obj = {}
Object.defineProperty(obj, \'prop\', {
value: 10,
enumerable: true // 默认是 false,即不可枚举这个属性,在这里吃了大亏
})
JSON.stringify(obj) // 输出:{ prop: 10 }
以上是关于JSON.stringify 函数与 Object.defineProperty 的坑:不可枚举属性无法写入的主要内容,如果未能解决你的问题,请参考以下文章
text [stringify循环JSON对象] #js #json #stringify #cyclic #object
JSON.stringify 返回“[object Object]”而不是对象的内容