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

标签 javascript momentjs prototype extend

在 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,但问题是我使用的是箭头函数,而不是标准函数,其中 的含义这是不同的。

因此,这是工作代码:

import moment from 'moment';

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

export default moment;

再次感谢!

关于javascript - 如何扩展 moment.js 并向其中添加新函数/方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67230507/

相关文章:

javascript - Moment.js本地时区问题

javascript - 在循环中创建命名的 javascript 对象

javascript - 多次出现的数组值

javascript - 使用 moment.js 将我的变量转换为 12/12 时间格式

javascript - 获取天,小时和分钟的差异时刻js

JavaScript - 原型(prototype)方法未定义

javascript - 当我在函数中返回 'this' 时,代码表现不同

javascript - 我的汉堡菜单在特定页面上没有响应?

javascript - jQuery:从多个 div 中动画删除样式属性

javascript - 如何在选择框中隐藏选定的选项文本,Angular 4