15

moment.js ドキュメントから

moment().toJSON(); オブジェクトを JSON にシリアル化する場合、Moment オブジェクトがあれば、ISO8601 文字列として表されます。

JSON.stringify({
    postDate : moment()
}); // {"postDate":"2013-02-04T22:44:30.652Z"}

瞬間オブジェクトがそれで動作している機能をどのように検出できるかわかりません。シリアル化されたとき、オブジェクトに単に格納されたとき、または文字列として返されたときに、どのように異なる値を返すことができますか?

4

1 に答える 1

24

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]');
}

だから、それはそれが文字列化されたときに自分自身を表現する方法を認識する方法です。

于 2013-02-20T23:01:12.177 に答える