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() 报错。
深入解析 JSON.stringify():序列化对象属性和限制

原文地址: https://www.cveoy.top/t/topic/nBRd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录