如何扩展 moment.js 并向其添加新函数/方法?

问题描述

在一个 React 项目中,我使用的是 moment.js(版本 2.22.2)并希望对其进行扩展并向其添加新功能以简化常见用例。

我尝试了几种不同的扩展 moment.js 的方法,但经过大量实验和谷歌搜索后,我一直无法弄清楚。

以下均无效:

#1:

import moment from 'moment';

moment.formatForDb = () => {
    return this.format('YYYY-MM-DD');
};

export default moment;

#2:

import moment from 'moment';

moment.prototype.formatForDb = () => {
    return this.format('YYYY-MM-DD');
};

export default moment;

#3:

import moment from 'moment';

moment.fn.formatForDb = () => {
    return this.format('YYYY-MM-DD');
};

export default moment;

有谁知道如何扩展 moment.js 以便可以向其中添加新功能?谢谢。

解决方法

非常感谢 Daniel A. White 和 Jeremy Thille 在上面的评论中为我指明了正确的方向。

事实证明你确实需要使用.fn,但问题是我使用的是箭头函数,而不是标准函数,this的含义不同.

因此,这是工作代码:

import moment from 'moment';

moment.fn.formatForDb = function () {
    return this.format('YYYY-MM-DD');
};

export default moment;

再次感谢!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...