gpt4 book ai didi

javascript - 为什么 JSON.stringify 为似乎具有属性的对象返回空对象符号 "{}"?

转载 作者:可可西里 更新时间:2023-11-01 02:05:42 25 4
gpt4 key购买 nike

以下示例显示 JSON.stringify() 为 SpeechSynthesisVoice 对象返回字符串 "{}":

var voiceObject = window.speechSynthesis.getVoices()[0];
JSON.stringify(voiceObject); //returns "{}"?

完整示例:JSFiddle

为什么它返回 "{}" 而不是像 "{voiceURI: "Google Deutsch", name: "Google Deutsch", lang: "de-DE", localService : false, 默认: false}"?

请注意,上面的示例不适用于 chrome 或 iOS;它是针对 Mozilla Firefox 的。

最佳答案

JSON.stringify 包括对象的自己的可枚举 属性 ( spec ),这些属性的值不是函数或未定义 (因为 JSON 没有这些),省略了它从其原型(prototype)继承的那些,任何定义为不可枚举的,以及任何其值为函数引用或 undefined 的。

很明显,您从 getVoices()[0] 返回的对象没有自己的、可以用 JSON 表示的可枚举属性。它们的所有属性必须是继承的、定义为不可枚举的,或者(虽然这里可能不是这种情况)函数或 undefined

关于javascript - 为什么 JSON.stringify 为似乎具有属性的对象返回空对象符号 "{}"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38542265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com