深入解析 JSON.stringify():序列化对象属性和限制
JSON.stringify() 方法用于将 JavaScript 对象转换为 JSON 字符串。它只读取对象本身的可枚举属性并将其序列化为 JSON 对象。
限制:
- 原型链属性: JSON.stringify() 无法读取对象原型链上的属性。
- 函数属性: 如果对象中有函数属性,则会被忽略掉。
- 循环引用: 如果对象中含有循环引用,则会报错。
示例:
const obj = { name: 'John', age: 30, sayHello: function() { console.log('Hello!'); } };
const jsonString = JSON.stringify(obj);
// jsonString = '{"name":"John","age":30}'
console.log(jsonString);
如上所示,sayHello 函数属性被忽略了,因为 JSON.stringify() 只能序列化可枚举的属性。
注意事项:
- 如果需要序列化对象原型链上的属性,可以使用 Object.getOwnPropertyNames() 方法获取所有属性名称,然后手动遍历并序列化。
- 如果需要序列化函数属性,可以使用自定义方法来处理函数逻辑,并将结果包含在 JSON 对象中。
- 避免在对象中创建循环引用,以防止 JSON.stringify() 报错。
原文地址: https://www.cveoy.top/t/topic/nBRd 著作权归作者所有。请勿转载和采集!