He estado trabajando con un poco de análisis JSON y pasando Javascript en Node.js y navegadores recientemente y tropecé con este enigma.¿Por qué JSON.stringify no serializa los valores del prototipo?
Cualquier objeto que haya creado usando un constructor, no se puede serializar por completo a través de JSON.stringify, ¡A MENOS que haya inicializado todos los valores dentro del constructor de forma individual! Esto significa que mi prototipo se vuelve esencialmente inútil al diseñar estas clases.
¿Alguien puede arrojar algo de luz sobre por qué lo siguiente no se serializa como espero?
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);
Lo que sucede:
una_cadena == { "initialisedValue": "Usted me puede ver!" }
yo esperaría:
una_cadena == { "initialisedValue": "Usted me puede ver!", "UninitialisedValue": "Usted no me puede ver!" }
posible duplicado de [? Cómo stringify objetos heredados a JSON] (http://stackoverflow.com/questions/8779249/how-to-stringify-inherited-objects-to-json) – lonesomeday
http://stackoverflow.com/questions/5790620/how-to-stringify-a-whole- javascript-object-including-proto-properties – speg
Entiendo que los métodos no se pueden serializar a través de JSON, pero gracias un solo día, como me ha señalado una discusión ab esto. Obviamente, es un 'problema' documentado, no estoy seguro de por qué mis búsquedas no mencionaron esto. ¡Gracias! – killercowuk