Следующий пример показывает, что JSON.stringify()
возвращает строку "{}"
для объектов SpeechSynthesisVoice:Почему JSON.stringify возвращает пустое обозначение объекта "{}" для объекта, который, как представляется, имеет свойства?
var voiceObject = window.speechSynthesis.getVoices()[0];
JSON.stringify(voiceObject); //returns "{}"?
Полный пример: JSFiddle
Почему это возвращение "{}"
, а не что-то вроде "{voiceURI: "Google Deutsch", name: "Google Deutsch", lang: "de-DE", localService: false, default: false}"
?
Обратите внимание, что приведенный выше пример не работает для хрома или iOS; он предназначен для Mozilla Firefox.
Или свойства, недопустимые типы данных JSON, хотя это, вероятно, не относится к примеру вопроса. –
Хорошо, спасибо! Я обновил этот пример, чтобы показать, что у голосового объекта есть некоторые свойства, такие как обычный объект. Как вы можете видеть (используя представление отладки или выход из консоли), что эти свойства наследуются? –
@MathiasS: Когда '.hasOwnProperty()' возвращает false – slebetman