gpt4 book ai didi

javascript - moment.js 如何知道它的对象何时被序列化?

转载 作者:可可西里 更新时间:2023-11-01 01:30:21 24 4
gpt4 key购买 nike

来自 moment.js 文档

moment().toJSON(); When serializing an object to JSON, if there is a Moment object, it will be represented as an ISO8601 string.

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

我不明白 moment 对象如何检测对其操作的函数。它如何能够在序列化时返回不同的值,以及当简单地存储在对象中或作为字符串返回时?

最佳答案

当使用 stringify 时,对象可以定义它的表示方式,如本文档所示:

来自 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify

toJSON 行为

If an object being stringified has a property named toJSON whose value is a function, then the toJSON method customizes JSON stringification behavior: instead of the object being serialized, the value returned by the toJSON method when called will be serialized.

例如:

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

所以,这就是它如何知道在被字符串化时如何表示自己。

关于javascript - moment.js 如何知道它的对象何时被序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14991374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com