。矩()的toJSON();将对象序列化为JSON时,如果有 Moment对象,它将表示为ISO8601字符串。
JSON.stringify({
postDate : moment()
}); // {"postDate":"2013-02-04T22:44:30.652Z"}
我不明白当前物体如何检测其上运行的功能。如何在序列化时返回不同的值,何时只是存储在对象中,还是以字符串形式返回?
答案 0 :(得分:24)
使用stringify时,对象可以定义它的表示方式,如本文档所示:
来自https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify
toJSON行为
如果要进行字符串化的对象具有名为toJSON的属性 value是一个函数,然后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]');
}
因此,它是如何在字符串化时表示如何表示自己的。