Javascript JSON.stringify não manipula o protótipo corretamente?
Estive inicializando minhas classes reutilizáveis como esta (o construtor geralmente é um copiador-construtor):
function Foo() {}
Foo.prototype.a = "1";
Foo.prototype.b = "2";
Foo.prototype.c = [];
var obj = new Foo();
obj.c.push("3");
mas o JSON.stringify não produz o resultado esperado:
JSON.stringify(obj);
{}
As variáveis funcionam como esperado para todo o resto.
Se toJSON for substituído, ele funcionará bem:
Foo.prototype.toJSON = function () {
return {
a: this.a,
b: this.b,
c: this.c
};
};
JSON.stringify(obj);
{"a": "1", "b": "2", "c": ["3"]}
Também funciona bem se as variáveis forem definidas dentro do construtor:
function Alt() {
this.a = 1;
this.b = "2";
this.c = [];
}
JSON.stringify(obj);
{"a": 1, "b": "2", "c": ["3"]}
O que está acontecendo?
Exemplo aqui:http://jsfiddle.net/FdzB6/