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/

questionAnswers(2)

yourAnswerToTheQuestion