Das folgende Beispiel zeigt, dass JSON.stringify()
die Zeichenfolge "{}"
für SpeechSynthesisVoice Objekte zurückgibt:Warum gibt JSON.stringify die leere Objektnotation "{}" für ein Objekt zurück, das Eigenschaften zu haben scheint?
var voiceObject = window.speechSynthesis.getVoices()[0];
JSON.stringify(voiceObject); //returns "{}"?
Komplettes Beispiel: JSFiddle
Warum es "{}"
und nicht so etwas wie "{voiceURI: "Google Deutsch", name: "Google Deutsch", lang: "de-DE", localService: false, default: false}"
zurückkehrt?
Beachten Sie, dass das obige Beispiel nicht für Chrome oder iOS funktioniert; Es ist für Mozilla Firefox ausgerichtet.
Oder Eigenschaften, die keine gültigen JSON-Datentypen sind, obwohl das für das Beispiel der Frage wahrscheinlich nicht relevant ist. –
Ok, danke! Ich habe das Beispiel aktualisiert, um zu zeigen, dass das Sprachobjekt einige Eigenschaften wie ein normales Objekt zu haben scheint. Wie können Sie (mithilfe der Debug-Ansicht oder der Konsolenausgabe) sehen, dass diese Eigenschaften vererbt werden? –
@MathiasS: Wenn '.hasOwnProperty()' false zurückgibt – slebetman