stringifyを使用する場合、このドキュメントに示すように、オブジェクトはオブジェクトの表現方法を定義する場合があります。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringifyから
toJSONの動作
文字列化されるオブジェクトに、値が関数であるtoJSONという名前のプロパティがある場合、toJSONメソッドはJSON文字列化の動作をカスタマイズします。オブジェクトがシリアル化される代わりに、呼び出されたときにtoJSONメソッドによって返される値がシリアル化されます。
例えば:
var x = {
foo: 'foo',
toJSON: function () {
return 'bar';
}
};
var json = JSON.stringify({x: x});
//json will be the string '{"x":"bar"}'.
moment.jsのドキュメント(ここに表示:https ://raw.github.com/timrwood/moment/2.0.0/moment.js )は、これが実際にサポートされていることを示しています。正確なコードは次のとおりです。
toJSON : function () {
return moment.utc(this).format('YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
}
だから、それはそれが文字列化されたときに自分自身を表現する方法を認識する方法です。