Почему JSON.stringify не сериализует значения прототипа?
Я недавно работал с большим количеством разборов JSON и передачей Javascript в Node.js и браузерах и столкнулся с этой загадкой.
Любые объекты, которые я создал с помощью конструктора, не могут быть полностью полностью сериализованы через JSON.stringify, ЕСЛИ Я не инициализировал все значения внутри конструктора индивидуально! Это означает, что мой прототип становится практически бесполезным при разработке этих классов.
Может ли кто-то пролить свет на то, почему следующее не сериализуется, как я ожидаю?
var ClassA = function () { this.initialisedValue = "You can see me!" };
ClassA.prototype = { initialisedValue : "You can't see me!", uninitialisedValue : "You can't see me!" };
var a = new ClassA();
var a_string = JSON.stringify(a);
Что просходит:
a_string == {& quot; initialisedValue & quot; : "Ты меня видишь!" }
Я бы ожидал:
a_string == {& quot; initialisedValue & quot; : "Вы можете видеть меня!", "uninitialisedValue" "Вы меня не видите!" }